
(1) 查看Linux系统环境变量 : echo $NLS_LANG
(2)查看数据库字符集
select*from nls_database_parameters;--数据库服务器字符集
查询以下三个参数值:
NLS_LANGUAGE SIMPLIFIED CHINESE
NLS_TERRITORY CHINA
NLS_CHARACTERSET AL32UTF8
查询NLS_LANG的组成规则为
NLS_LANGUAGE_NLS_TERRITORY.NLS_CHARACTERSET
则上述例子的 NLS_LANG=‘SIMPLIFIED CHINESE_CHINA.AL32UTF8’
实际Linux系统环境变量 NLS_LANG=‘AMERICAN_AMERICA.AL32UTF8’,设置
export NLS_LANG='AMERICAN_AMERICA.AL32UTF8'
然后重新登录sqlplus,显示正常
为避免每次连接都要重新设置一次,将NLS_LANG设置写入root用户和oracle用户下.bash_profile,
具体操作如下:
1.修改~/.bash_profile中的NLS_LANG设置。
vim ~/.bash_profile
按insert 键,进入编辑模式写入
export NLS_LANG="AMERICAN_AMERICA.AL32UTF8"
2.退出:
输入“:”,进入底部命令模式,输入wq,回车,退出同时保存需改文件
大写ZZ,连按两次Z,退出同时保存文件修改内容
总结:乱码问题是字符编码和解码格式不一样,造成显示乱码,解决主要是将工具的编码设置与数据库编码一致。