Linux执行sql脚本后中文变乱码、中文变问号的解决方法

中文乱码一直都是让大陆程序员闹心的问题,今天不巧让我碰到了。把解决办法贴出来,和大家分享~
操作系统:LinuxRedHat6(已安装中文包,支持中文显示以及中文版操作系统界面);
数据库:oracle11gR2
问题:在编写数据库初始化脚本时,中文部分插入数据库全是乱码。
解决办法:
保证sql脚本格式的正确性:
1、大多数童鞋都是在windows下编辑sql脚本的,所以,在保存时请选择UTF-8 无BOM编码格式。我使用的编辑工具是Ultral Edit.
更改Oralce环境变量:
2、登录Linux,进入oracle用户,编辑/home/oracle/.bash_profile文件
#vi /home/oracle/.bash_profile;
在最后一行添加:
export NLS_LANG="Simplified Chinese_CHINA.AL32UTF8"
AL32UTF8是根据你的oracle数据库字符集填写的。
之后重新编译.bash_profile文件或者重新登录
#source /home/oracle/.bash_profile;(重新编译的方式,执行这段代码)
验证一下吧:#echo $NLS_LANG;
如果是Simplified Chinese_CHINA.AL32UTF8就对了,这时候sqlplus进入oracle,查看中文还是执行带有中文的脚本就都可以啦~
 
查看数据库字符集sql语句:
SQL>select * from nls_database_parameters where parameter in('NLS_CHARACTERSET','NLS_NCHAR_CHARACTERSET');
其中:NLS_CHARACTERSET字段对应AL32UTF8,
SQL>select * from v$nls_parameters   ;
其中:NLS_LANGUAGE字段对应Simplified Chinese ,  NLS_TERRITORY对应CHINA。

你可能感兴趣的:(Linux执行sql脚本后中文变乱码、中文变问号的解决方法)