应用界面发现有的菜单数据是乱码的。排查过程
1. 查看orc字符集
SQL> select userenv('language') from dual;
USERENV('LANGUAGE')
----------------------------------------------------
SIMPLIFIED CHINESE_CHINA.ZHS16GBK
是支持中文的
2. 看执行的sql文件,windows看是正常的
centos看则是乱码,类似:
'³éÈ¡½á¹¹»¯Îļþ±í×Ö¶ÎÓ³Éä';
应该是windows的编码和centos不一致导致的。
服务器上使用file命令,也可以看出编码不对
]# file 2.sql
2.sql: ISO-8859 C program text, with CRLF line terminators
# file -i 2.sql
2.sql: text/x-c; charset=iso-8859-1
这里使用的是ISO-5559-1编码
尝试iconv命令转换
iconv -f ISO-8859-1 -t UTF-8 2.sql
还是一堆乱码-- ×Ô¶¯Í³¼ÆÏ̵߳÷¶ÈÏà¹Ø
规避方法:
Method1. 找到原始sql文件在windows的plsql下重新执行。
Method2. 需要再centos通过sqlplus执行,则需要注意编码格式再上传
windows这边编辑好的文件需要使用文本编辑工具转换编码,比如Notepad++ 点击编码--以UTF-8格式编码
编辑器右下方则会出现UTF-8-BOM的字样,上传
]# file 2.sql
2.sql: UTF-8 Unicode (with BOM) C program text, with CRLF line terminators
cat 查看里面的中文正常显示。
PS:
试过 编码--以UTF-8 无BOM格式编码,在centos使用file命令显示如下:
nobom.sql: UTF-8 Unicode C program text, with CRLF line terminators
cat查看还是乱码的