基本情况:linux服务器上的oracle刚装好导了点数据进去,在自己的电脑上用plsql进去查询时乱码
接下里进入正题。
1.乱码原因:
window,sqlplus,oracle字符集不一致导致的
详细解释请看:https://www.cnblogs.com/bingo1717/p/7803359.html
2.解决思路
将sqlplus与操作系统的编码设为一致状态
3.解决方法
1.对于linux终端,查看.bashrc或者.bash_profile或者etc/prifile里的EXPORT NLS_LANG是否为"ORALCE服务端的字符集"
ORALCE服务端的字符集=select userenv('language') from dual;支持中文的一般为AMERICAN_AMERICA.ZHS16GBK
如果oracle里的字符集不支持中文,则需修改,参照https://blog.csdn.net/dante_feng/article/details/70789096。
对于window的plsql,在系统变量里添加一项NLS_LANG,内容为AMERICAN_AMERICA.ZHS16GBK
4.注意
另外还需要注意用在shell文件里的字符编码名称与oracle是长的不一样的。
比如这个zh_CN.UTF8是字符集的localeID而不是字符集的名称,真正的名称叫SIMPLIFIEDCHINESE_CHINA.AL32UTF8,如果设置成zh_CN.UTF8,oracle会报ORA-12705: Cannotaccess NLS data files or invalid environmentspecified错误。在.bash_profile里面加入NLS_LANG="SIMPLIFIEDCHINESE_CHINA.AL32UTF8"; export NLS_LANG问题就解决了。
localedid与字符集名称对应关系:https://www.cnblogs.com/bingo1717/p/7803359.html