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”,在服务端查询显示正常,在客户端查询时显示为“寮犱竴”
怎么解决?
服务端: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”,在服务端查询显示正常,在客户端查询时显示为“寮犱竴”
怎么解决?
客户端的字符集要求与服务器一致,看看你注册表的字符集:
HKEY_LOCAL_MACHINE-->SOFTWARE-->ORACLE-->HOME0
修改为NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK
服务端安装数据库时,字符集选的也是ZHS16GBK 。
除了注册表中有NLS_LANG选项外,PL/SQL 也有NLS_LANG选项设置有关字符集的设置,可以参考这里:
Oracle 全球化特性与字符集
这是什么原因?