oracle 字符集不对,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

特别注意:如果服务端编码为AL32UTF8,那么客户端就应该安装自己环境来设置字符编码。

比如我有一个服务器端,其中两个客户端一个为简体,一个为繁体:

服务器端字符集设置:american_america.AL32UTF8

简体客户端字符集设置:AMERICAN_AMERICA.ZHS16GBK

繁体客户端字符集设置:TRADITIONAL CHINESE_TAIWAN.ZHT16MSWIN950

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值