NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
说明:
NLS_LANG一般由三个部分组成, 语言、地域和字符集
真正影响数据库字符集的其实是第三部分。
ZHS16GBK表示采用GBK编码格式、16位(两个字节)简体中文字符集
LINUX也可以用这个字符集。
select userenv('language') from dual先确认Oracle的字符集,sqlplus登录Oracle后执行语句:
select userenv('language') from dual
返回值例如:AMERICAN_AMERICA.ZHS16GBK
export NLS_LANG="AMERICAN_AMERICA.ZHS16GBK"
修改Linux的NLS_LANG环境变量,修改Oracle指定的Linux用户下面“.base_profile”文件,加入如下:
export NLS_LANG="AMERICAN_AMERICA.ZHS16GBK"
用Linux命令“source ~/.base_profile”或者重启,使环境变量设置生效;查看环境变量的Linux命令为“echo $NLS_LANG”。
一般来说,oracle数据导出spool方式,中文出现乱码,这情况是因为数据库服务器和客户端字符集不匹配,执行sqlplus的机器就是客户端,服务器和客户端也可能是一台机器,执行sqlplus之前要先设置客户端的字符集,在linux上:export NLS_LANG=.......
在windows上set NLS_LANG查询数据库字符集:select property_value from database_properties where property_name like 'NLS_CHAR%'
1、比如查询结果是:ZHS16GBK
那你在sqlplus之前要设置:export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
然后再登录sqlplus用spool生成数据
检查下你导出时候的环境变量,导入时的环境变量
2、比如导出时NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
导入时NLS_LANG没有设置,或者设置为其他字符集,则导入的库内汉字就有可能变成乱码。
解决方法,连接数据库的时候设置正确字符集即可。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)