您好,欢迎访问一九零五行业门户网

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

我有一个项目,从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
回复讨论(解决方案) 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,结果是空的,
求赐教如何才能在php初始化的时候装载系统环境变量,换句话说如何指定php的环境变量,bash_profile不起作用。
写成 $conn = oci_logon('orcl','orcl','127.0.0.1/orcl','utf8'); 就那么费事吗?
java 是通过 jdbc 进行数据库操作的,php 是通过客户端的
所以后者要多做一些设置上的事情
额,其实这公司是别的软件公司的产品,原生mysql,后来由于公司要求统一用oracle rac数据库,迁移过去的。。好吧我找找他们的数据库连接是写在哪的,自己改下算了。
其它类似信息

推荐信息