日期:2014-05-16  浏览次数:20388 次

Oracle服务端编码和客户端编码

应一直受服务端编码和客户端编码要一致误导,结果害了我半个小时时间,来解决这个小问题,现在把解决记录一下,以备忘记:?

出现中文乱码的主要原因是字符集不同。在Oracle中,我们关心三个地方的字符集:?

先来查看一下数据库字符集:?
在Oracle中可能使用Select userenv('language') from dual;或者:Select name, value$ from props$;查看。?

l Oracle服务器内部的字符集?
修改方法:?
connect sys/chang_on_install?
update props$ set value$='TRADITIONAL CHINESE_TAIWAN.AL32UTF8'where name='NLS_CHARACTERSET';?
commit;?

2 NLS_LANG变量里保存的字符集?

这个是Oracle设置的一个变量。在Windows中,这个变量保存在注册表中:?
HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOME0 保存着NLS_LANG变量。?

在Unix/Linux中,则需要自己进行设置,在.profile里面加上 NLS_LANG=AMERICAN_AMERICA.ZHS16GBK?
export NLS_LANG?

3 客户端应用的字符集?

下面是我用到的字符集?
american_america.AL32UTF8?
TRADITIONAL CHINESE_TAIWAN.ZHT16MSWIN950?
TRADITIONAL CHINESE_TAIWAN.AL32UTF8?
AMERICAN_AMERICA.WE8ISO8859P1?
AMERICAN_AMERICA.ZHS16GBK?