linux 下oracle 10g sqlplus中文显示和输入的问题

一般情况下我们用的Oracle编码是UTF-8的

首先我们使用的客户端securityCRT设置了字符编码 是utf8,即使Sqlplus查询正确并返回相应UTF-8格式的值也是不能正确显示滴.


export LANG=zh_CN.UTF-8 (登陆时前台的编码问题)

LANG变量是language的简称,这个变量是决定系统的默认语言的,即系统的菜单、程序的工具栏语言、输入法默认语言等。
LANG变量清空,由于英语是无论什么情况都支持的,LANG变量被清空后,系统就默认用英语。这样设置后,在字符模式下输出的出错信息等就是全英文的了。但这种设置是临时的,只是临时改变了LANG这个bash变量而已。当退出重新登录或者切换到其他字符终端后就无效了。


export NLS_LANG=AMERICAN_AMERICA.UTF8 (解决sqlplus中 oracle中前台编码问题)

“NLS_LANG和数据库的字符集一样或许是正确的,但是经常是不对的。不要认为NLS_LANG必须和数据库的字符集一样,这经常是错的。” 《循序渐进Oracle》中说NLS_LANG一样的话可以提高性能,因为不需要字符集的转换。其实这样的转换不时发生在Server端,Client端 转换完成后传递给Server端。我觉得,只要NLS_LANG是Server的字符集的子集就可以。 

“NLS_LANG的字符集设置不会更改Client端的字符集。它只是用来告诉Oracle你在Client端使用什么字符集,你不能通过设置NLS_LANG去影响Client的字符集”。而且如果Client端的字符集和NLS_LANG不兼容,会导致数据库乱码。 

“如果你不在Client端设置NLS_LANG,那么默认会使用Server的NLS_LANG设置,这是错的。如果Oracle在安装时没有 设置NLS_LANG,那么NLS_LANG不会另外再设置,而是使用默认值:AMERICAN_AMERICA.US7ASCII。语言是 AMERICAN,区域是AMERICA,字符集US7ASCII” 

“设置NLS_LANG的LANGUAGE 和 TERRITORY部分不会影响存储在数据库的字符。将NLS_LANG设置为JAPANESE_JAPAN.WE8MSWIN1252不会允许你存储日 文。因为WE8MSWIN1252字符集不支持日文。但是设置成AMERICAN_AMERICA.JA16SJIS会允许你存储日文,假设你输入的字符 是JA16SJIS,并且数据库的字符集也支持日文(如UTF8或者JA16SJIS)”

转自:http://www.cnblogs.com/dongzhiquan/archive/2012/06/26/2564134.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值