linux系统下oracle字符乱码问题

linux系统按下默认安装中文的话,并且oracle安装兼容中文安装且字符集为GBK的情况下,日志或错误显示的时候会出现乱码情况。这是由于和系统默认字符集不兼容情况照成的。

 

命令行下输入locale命令可以获得当前系统字符集,如图

                               

locale把按照所涉及到的文化传统的各个方面分成12个大类,这12个大类分别是:

1、语言符号及其分类 (LC_CTYPE)

2、数字(LC_NUMERIC)

3、比较和排序习惯(LC_COLLATE)

4、时间显示格式(LC_TIME)

5、货币单位(LC_MONETARY)

6、信息主要是提示信息,错误信息, 状态信息, 标题, 标签, 按钮和菜单等(LC_MESSAGES)

7、姓名书写方式(LC_NAME)

8、地址书写方式(LC_ADDRESS)

9、电话号码书写方式(LC_TELEPHONE)

10、度量衡表达方式 (LC_MEASUREMENT)

11、默认纸张尺寸大小(LC_PAPER)

12、对locale自身包含信息的概述 (LC_IDENTIFICATION)。

设定locale就是设定12大类的locale分类属性,即 12个LC_*。除了这12个变量可以设定以外,为了简便起见,还有两个变量: LC_ALL和LANG。它们之间有一个优先级的关系: LC_ALL>LC_*>LANG 可以这么说,LC_ALL是最上级设定或者强制设定,而LANG是默认设定值。

如果你设定了LC_ALL=zh_CN.UTF-8,那么不管LC_*和LANG设定成什么值,它们都会被强制服从 LC_ALL的设定,成为 zh_CN.UTF-8。

例如:

我说中文,身处中华人民共和国,使用国标2312字符集来表达字符。 zh_CN.GB2312=中文_中华人民共和国+国标2312字符集。

NLS_LANG 由三部分组成 : NLS_LANG=<NLS_LANGUAGE>_<NLS_TERRITORY>.<clients characterset>    

                      :NLS_LANG=语言_地域_客户端字符集  

 LANG值为"en_US.UTF-8" 时,意味着NLS_LANG用以下格式设置 NLS_LANG=AMERICAN_AMERICA.AL32UTF8   

 如果LANG值为 "fr_FR.UTF-8" 那在 NLS_LANG设置的值就是 FRENCH_FRANCE.AL32UTF8.  

 

修改 /etc/sysconfig/下 i18n文件,换成你想要的字符集即可。

例如,在rhel5.7下i18n文件内容如下

LANG="zh_CN.UTF-8"

如果要换成GBK字符集

LANG="zh_CN.GBK"即可

修改 /etc/sysconfig/i18n 文件,如 

LANG="en_US",xwindow会显示英文界面, 

LANG="zh_CN.GB18030",xwindow会显示中文界面。 

 

SQL> show parameter nls_language

NAME         TYPE  VALUE
------------------------------------ ----------- ------------------------------
nls_language        string  SIMPLIFIED CHINESE

 

以上是root用户下的设置修改。而oracle用户需要修改/home/oracle/.bash_profile下添加

export  NLS_LANG="SIMPLIFIED CHINESE_CHINA".ZHS16GBK
export  LC_ALL=zh_CN.GBK
 
 
 
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值