网上有很多乱码处理方式,但是说的很不详细也没有解释,遇到一些问题是修修改改解决不了的。
首先乱码会和连接终端,oracle服务端,服务器环境变量编码设置有关
1.首先环境变量必须要配置在用户变量下:~/.bash_profile
2.使用select userenv('language') from dual;查看oracle编码
例如我这里是:AMERICAN_AMERICA.ZHS16GBK
3.vim ~/.bash_profile 配置环境变量 export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK,
再source ~/.bash_profile生效
4.当确认了编码是GBK后,修改连接终端的编码,例如xshell 改为GBK
5.打开sqlplus 执行ddl或者dml语句,最好是ddl的字段注释语句,看看是否出现quoted string not properly terminated
例如:comment on column user.user_no is '用户号';
6.没有出现则成功,然后用sqlplus 执行 sql脚本文件,查看是否成功。sql脚本文件编码必须也是GBK,
一切以Oracle服务端的编码为准
7.当第六步出现问题时,检查前5部是否正确,或者在将LANG编码也改为GBK试试。