Oracle中汉字数据显示为乱码的问题
服务端:ubuntu10.4 oracle10g
客户端:windowsxp服务端编码:
   select userenv('language') from dual; 
   结果为:SIMPLIFIED CHINESE_CHINA.ZHS16GBK
   
客户端注册表中:NLS_LANG 的值为SIMPLIFIED CHINESE_CHINA.ZHS16GBK   字符集相同,为什么在服务端新增的数据,在客户端查询时显示为乱码?
例如数据:
create table test (id varchar2(50),name varchar2(50));
insert into test values('001','张一');
insert into test values('002','张二');
insert into test values('003','张三');
commit;

其中“张三1”,在服务端查询显示正常,在客户端查询时显示为“寮犱竴” 
怎么解决?

解决方案 »

  1.   

    查看下你客户端字符集NL_LANG是什么,然后修改跟服务器字符集一致就OK了
    客户端的字符集要求与服务器一致,看看你注册表的字符集:
    HKEY_LOCAL_MACHINE-->SOFTWARE-->ORACLE-->HOME0   
    修改为NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK
      

  2.   

    回楼上,服务端字符集与客户端字符集都是SIMPLIFIED CHINESE_CHINA.ZHS16GBK。
      

  3.   

    你用的是什么工具查询的,plsql dev还是obj??
      

  4.   

    回楼上,客户端用PL/SQL,服务端用sqlplus。
    服务端安装数据库时,字符集选的也是ZHS16GBK 。
      

  5.   

    貌似没理由啊,检查一下PL/SQL 中NLS_LANG的设置选项
    除了注册表中有NLS_LANG选项外,PL/SQL 也有NLS_LANG选项设置有关字符集的设置,可以参考这里:
    Oracle 全球化特性与字符集
      

  6.   

    已解决,将服务端字符集设置为“AL32UTF8”既可。 
    这是什么原因?