开发环境:linux 5.4 php5 apache unixodbc
数据库:linux 5.4 oracle 10.2
问题描述:
通过php向oracle中存入汉字时,存入数据库的都是乱码,但是通过windows客户端存入和读取汉字都正常,
数据库字符集:
NLS_LANGUAGE
AMERICANNLS_TERRITORY
AMERICANLS_CURRENCY
$NLS_ISO_CURRENCY
AMERICANLS_NUMERIC_CHARACTERS
.,NLS_CHARACTERSET
ZHS16GBKNLS_CALENDAR
GREGORIANNLS_DATE_FORMAT
DD-MON-RRNLS_DATE_LANGUAGE
AMERICANNLS_SORT
BINARYNLS_TIME_FORMAT
HH.MI.SSXFF AMNLS_TIMESTAMP_FORMAT
DD-MON-RR HH.MI.SSXFF AMNLS_TIME_TZ_FORMAT
HH.MI.SSXFF AM TZRNLS_TIMESTAMP_TZ_FORMAT
DD-MON-RR HH.MI.SSXFF AM TZRNLS_DUAL_CURRENCY
$NLS_COMP
BINARYNLS_LENGTH_SEMANTICS
BYTENLS_NCHAR_CONV_EXCP
FALSENLS_NCHAR_CHARACTERSET
AL16UTF16NLS_RDBMS_VERSION
10.2.0.1.0开发环境字符集:
SQL> select userenv('language') from dual;USERENV('LANGUAGE')
----------------------------------------------------
SIMPLIFIED CHINESE_CHINA.ZHS16GBKSQL> more /etc/sysconfig/i18n 
LANG="en_US.UTF-8"/etc/profile已设置export NLS_LANG="SIMPLIFIED CHINESE_CHINA.ZHS16GBK"
/etc/init.d/httpd 已设置export NLS_LANG="SIMPLIFIED CHINESE_CHINA.ZHS16GBK"
请各位大侠帮忙找找原因,多谢!!

解决方案 »

  1.   

    既然读取正常,只要客户认为没问题,就没必要深究了。你说呢?如果是本着研究的精神,倒是可以研究一下我曾经做一个php+mssql2005的项目,不管怎么改,数据库中看到的都是乱码,但是读取就是没问题。
      

  2.   

    您好,我没有描述清楚,客户端是指sqlplus,用sqlplus是可以正常存取的,但是网页存取是乱码。
      

  3.   

    你数据库输出的字符集和网页显示的字符集不一致,没用过oracle,你自己查查如何设置数据库输出字符集。这和数据库存储时使用的何种字符集无关。