PL/SQL Developer中文乱码问题

一、问题描述

        使用select * from scott.invoice的结果,发现中文字段都是“????”,而英文字段和数字都正常。

二、原因分析

        这是因为服务器端的字符集和客户端的字符集不一致或者机器的字符集和客户端字符集不一致导致的。

       所以只要让字符集一致(以服务器端字符集为主)就OK了。

三、解决方案:

1.检查服务器编码:

select * from v$nls_parameters;



我们可以看到: 
语言是SIMPLIFIED CHAINESE,字符集为ZHS16GBK。如果NLS_LANGUAGE是AMERICAN,可以通过以下语句修改:

alter system set nls_language='SIMPLIFIED CHINESE' scope=spfile; 
然后重启数据库服务即可。


2.设置本地客户端编码:
进入 我的电脑,属性,高级,环境变量,添加2项:

LANG=zh_CN.GBK 
NLS_LANG="SIMPLIFIED CHINESE_CHINA.ZHS16GBK"
然后再次进入PL/SQL,查询就可以发现不是乱码了。



如果是客户端和机器的字符不一致,要修改机器的字符集编码可以进入注册表修改:


HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOME0


"NLS_LANG"值改为"SIMPLIFIED CHINESE_CHINA.ZHS16GBK"


参考文献:

http://blog.csdn.net/zftang/article/details/6586524

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值