oracle 客户端字符集通过 NLS_LANG 环境变量设置~~~
http://www.itpub.net/thread-1074129-1-1.html

解决方案 »

  1.   

    我在bash_profile有设置export NLS_LANG=AMERICAN.ZHS16CGB231280
    还是不行
      

  2.   

    我在bash_profile有设置export NLS_LANG=AMERICAN.ZHS16CGB231280
    还是不行
      

  3.   

    你在 PL/SQL中用这个查询一下,oracle 的 NLS 参数的值是不是正确。
    另外,修改 bash 的环境文件的话,你要看看你的 oracle 所在用户的 shell 是不是 bash。如果是默认用 sh,你改 bash 的也没用。select * from nls_database_parameters;
      

  4.   

    查询出来显示:
    NLS_LANGUAGE     :   AMERICAN NLS_DATE_LANGUAGE  :  AMERICANNLS_NCHAR_CHARACTERSET :  UTF8不知道大哥还要看什么参数
      

  5.   

    NLS_CHARACTERSET  :  ZHS16CGB231280
      

  6.   

    参数没错~把你的 oci 连接那部分代码发出来看看吧~~~另外,你的乱码的字段类型是 NCHAR 还是 CHAR?
      

  7.   

    $a=oci_connect($this->C_user,$this->C_passwd,"(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=$this->IP)(PORT=1521))(CONNECT_DATA=(SID=$this->C_db)))");$b=OCIParse($a,'select name from user');
    OCIExecute($b);
      

  8.   


    oci_connect 的第四个参数是设置 charset 的,这个在 oracle 9.2 和以上版本中有用。你设置一下这个参数在试试~~