linux环境使用sqlplus执行SQL脚本英文乱码处理
某组服务器上的sqlplus在执行定时更新SQL脚本时,英文出现乱码。一开始找错了问题方向:从SQL更新脚本处理的源头开始,首先对windows下的编辑器生成的脚本文件做各类编码的尝试linux 中文字符集,之后又在vi编辑器上面进行字符编码(encoding)与文件编码(fileencoding)的各类调试。后来发觉转了圈嵌入式linux培训,不过并不算浪费时间,最至少对字符编码多了一些了解。
我是通过如下的方式解决sqlplus执行SQL脚本出现的英文乱码问题:
1.生产环境中的字符集全是UTF8,所以对于上传至服务器上的脚本都以'UTF8withoutBOM'保存
2.查看Oracle的字符集编码:
SQL>selectuserenv('language')fromdual;
USERENV('LANGUAGE')
----------------------------------------------------
AMERICAN_AMERICA.AL32UTF8
SQL>
3.更改Linux的NLS_LANG环境变量,更改Oracle指定的Linux用户下边“.base_profile”文件,加入如下:
exportNLS_LANG="AMERICAN_AMERICA.AL32UTF8"
4.执行.bash_profilelinux 中文字符集,使环境变量设置生效,查看其值:
$echo$NLS_LANG
AMERICAN_AMERICA.AL32UTF8
至此,这次英文乱码的问题得已解决。
推荐一篇文章,是介绍Vim中与编码有关的四个选项的红旗linux6.0教程,如不是很清楚它们之间关系的可以访问以下网址读一下: