Oracle中汉字数据显示为乱码的问题

CHID 2011-01-27 05:08:56
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”,在服务端查询显示正常,在客户端查询时显示为“寮犱竴”
怎么解决?

...全文
219 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
CHID 2011-01-28
  • 打赏
  • 举报
回复
已解决,将服务端字符集设置为“AL32UTF8”既可。
这是什么原因?
Leshami 2011-01-27
  • 打赏
  • 举报
回复
貌似没理由啊,检查一下PL/SQL 中NLS_LANG的设置选项
除了注册表中有NLS_LANG选项外,PL/SQL 也有NLS_LANG选项设置

有关字符集的设置,可以参考这里:
Oracle 全球化特性与字符集
CHID 2011-01-27
  • 打赏
  • 举报
回复
回楼上,客户端用PL/SQL,服务端用sqlplus。
服务端安装数据库时,字符集选的也是ZHS16GBK 。
lxyzxq2008 2011-01-27
  • 打赏
  • 举报
回复
[Quote=引用楼主 chid 的回复:]
Oracle中汉字数据显示为乱码的问题
服务端:ubuntu10.4 oracle10g
客户端:windowsxp

服务端编码:
select userenv('language') from dual;
结果为:SIMPLIFIED CHINESE_CHINA.ZHS16GBK

客户端注册表中:NLS_LANG 的值为SIMPLIFIED CHINESE……
[/Quote]你用的是什么工具查询的,plsql dev还是obj??
CHID 2011-01-27
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 gelyon 的回复:]
查看下你客户端字符集NL_LANG是什么,然后修改跟服务器字符集一致就OK了
客户端的字符集要求与服务器一致,看看你注册表的字符集:
HKEY_LOCAL_MACHINE-->SOFTWARE-->ORACLE-->HOME0
修改为NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK
[/Quote]
回楼上,服务端字符集与客户端字符集都是SIMPLIFIED CHINESE_CHINA.ZHS16GBK。
gelyon 2011-01-27
  • 打赏
  • 举报
回复
查看下你客户端字符集NL_LANG是什么,然后修改跟服务器字符集一致就OK了
客户端的字符集要求与服务器一致,看看你注册表的字符集:
HKEY_LOCAL_MACHINE-->SOFTWARE-->ORACLE-->HOME0
修改为NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧