之前因为程序要搬迁,在对Oracle数据库进行导入导出操作的时候,数据表的中文注释以及存储过程和函数中的中文注释均显示乱码。让人着实痛苦。

1、客户端字符集必须与服务端字符集一直

2、加载到Oracle数据库中的数据字符集必须与服务器字符集一致(例如:在不同字符集服务器之间导数据会导致中文乱码)

3、字符集同时存在于Oracle服务器和Oracle客户端

4、服务器字符集是在安装Oracle数据库的时候就指定的,一般不能修改,否则会出问题。如:ZHS16GBK字符集

5、客户端字符集是在Oracle用户环境变量中设定的

一些相关内容:

SELECT * FROM v$nls_valid_values; #查看Oracle数据库可用字符集参数设置

select * from nls_database_parameters; #查看Oracle数据库字符集

select * from nls_instance_parameters; #查看Oracle客户端字符集环境

解决办法:

Oracle客户端字符集由当前用户环境变量NLS_LANG设定

NLS_LANG构成方式:

NLS_LANG=LANGUAGE_TERRITORY.Characterset

LANGUAGE  #Oracle消息使用的语言

TERRITORY #服务器日期和数字格式

CHARACTERSET #字符集

例如:

NLS_LANG=AMERICAN_AMERICA.ZHS16GBK

备注:客户端与服务端字符集必须一直!但语言设置可以不同!

例如:

NLS_LANG="SIMPLIFIED CHINESE_CHINA".ZHS16GBK

一般建议语言设置用英文

具体操作:

vi  /home/oracle/.bash_profile  #编辑用户环境变量设置,以CentOS系统为例,在最后一行增加

export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK

:wq! #保存退出

source .bash_profile #使 bash_profile 设置立刻生效

至此,Linux下Orcle数据库导入导出中文乱码解决方法教程完成。

03-14 07:55