PHP连接ORACLE时乱码,手动PUTENV(NLS_LANG)环境变量后正常!

php中文网
发布: 2016-06-23 13:13:24
原创
1297人浏览过

我有一个项目,从mysql迁移到oracle rac中,数据库为utf8编码格式,用php进行简单连接取出的中文均为问号,百度后发现在进行数据库连接时需要指定连接编码为utf8,我指定了环境变量,并在测试页打印了php中全局环境变量,phpinfo(info_environment),结果就正常了。如果不指定,php环境变量页面没显示nls_lang的变量信息,则依旧乱码,现在有什么办法,我有好几十个php页面,难道都要手动在开头putenv(nls_lang)定义一下么。求高手赐招能够在php服务运行时就自带环境变量nls_lang的参数。并自动在info_environment显示成功。

补充下,我是centos6.5,已经在.bash_profile中定义了nls_lang。但貌似不起作用。php是5.6,web服务器是nginx 1.9

Chromox
Chromox

Chromox是一款领先的AI在线生成平台,专为喜欢AI生成技术的爱好者制作的多种图像、视频生成方式的内容型工具平台。

Chromox 184
查看详情 Chromox


回复讨论(解决方案)

ORACLE 没有 utf8 只有 utf-8
你在链接 ORACLE 时就应声明所用字符集
只有 ORACLE 8 及以下,才需要设置环境变量

ORACLE 没有 utf8 只有 utf-8
你在链接 ORACLE 时就应声明所用字符集
只有 ORACLE 8 及以下,才需要设置环境变量


您说的对,但是有没有办法设置默认字符集,即和JAVA那样不在PHP连接字符串中
$conn = OCI_Logon('orcl','orcl','127.0.0.1/orcl','UTF8');或者putenv("NLS_LANG=american_america,UTF8");
登录后复制

两者都能够正常。我现在就是想和JAVA那样不用事先申明,因为我的TEST.PHP文本就是UTF8格式,数据库也是UTF8格式,应该能够自动匹配吧?

我手动输出系统环境变量nls_lang,结果是空的,
phpinfo(INFO_ENVIRONMENT);
?>
求赐教如何才能在PHP初始化的时候装载系统环境变量,换句话说如何指定PHP的环境变量,bash_profile不起作用。

写成 $conn = OCI_Logon('orcl','orcl','127.0.0.1/orcl','UTF8'); 就那么费事吗?
java 是通过 jdbc 进行数据库操作的,php 是通过客户端的
所以后者要多做一些设置上的事情

额,其实这公司是别的软件公司的产品,原生MYSQL,后来由于公司要求统一用ORACLE RAC数据库,迁移过去的。。好吧我找找他们的数据库连接是写在哪的,自己改下算了。

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号