iamlaosong文
导入服务器Oracle数据库中汉字都是问号“?”,查数据库的字符集没问题,那么就是客户端的问题。
查Oracle用户的环境变量,发现没有设置NLS_LANG,在.bash_profile文件中增加:
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
重新导入数据,汉字显示正常。
另外,环境变量LANG用于Linux界面显示,和Oracle数据库无关。附一篇关于LANG的小网文备查。
一般来说要设置 Linux 系统的环境变量只需要在 /etc/profile (全局) 或者 ~/.bashrc (单个用户) 即可。但是对于 LANG 变量来说,有时候你即使在所有这些初始化脚本里面 export 过了,LANG 的值还是纹丝不动。实际上,你需要去修改 /etc/sysconfig/i18n 文件里面的内容。
vi /etc/sysconfig/i18n
LANG="zh_CN.UTF-8"
LANG="en_US"
SUPPORTED="zh_CN.UTF-8:zh_CN:zh:zh_TW.UTF-8:zh_TW:zh:en_US.UTF-8:en_US:en"
SYSFONT="latarcyrheb-sun16"
用ssh登录LINUX时,ssh终端有时会出现乱码,即使你设置LANG=en_US.UTF-8也一样.我试过SecureCRT,OpenSSH,SSH Secure Shell的客户端,都出现过这问题.有时更改一下客户端的设置就好了,但是有时更改客户端的设置后只能运行一次某个命令,之后又变成乱码了.
一个偶然的机会,在网上看到有人说将LANG变量的值改成"C"就行了.不过还真邪了,就来个LANG=C,什么问题都解决了,也不用设置客户端了,真是莫名其妙!不过到现在还不知道那个"C"是什么意思,它咋就那么厉害(其实随便设置若干个个字母,或者直接置空:export LANG="",问题都能解决,只要不是zh_CN.UTF-8)
原文链接:https://www.f2er.com/oracle/212157.html