Oracle SqlPlus 错误代码后的信息显示乱码
转载:https://blog.csdn.net/qungmu/article/details/79969306
转载:https://blog.csdn.net/qq_22472921/article/details/82020842
编码格式查看
1、查询 Oracle Server 端的字符集
有很多种方法可以查出 Oracle Server 端的字符集,比较直观的查询方法是以下这种:
SELECT USERENV('LANGUAGE') FROM DUAL;
结果如下:AMERICAN _ AMERICA. ZHS16GBK。
2、查询 DMP 文件的字符集
用 Oracle 的 EXP 工具导出的 DMP 文件也包含了字符集信息,DMP 文件的第 2 和第 3 个字节记录了 DMP 文件的字符集。如果 DMP 文件不大,比如只有 几M 或 几十M,可以用 ULTRAEDIT 打开( 16 进制方式),看第 2 第 3 个字节的内容,如 0354,然后用以下SQL查出它对应的字符集:
SELECT NLS_CHARSET_NAME(TO_NUMBER('0354','XXXX')) FROM DUAL;
ZHS16GBK
3、查询 Oracle Client 端的字符集
在 WINDOWS 平台下,就是注册表里面相应 OracleHome 的 NLS_LANG
计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Oracle\KEY_OraDB12Home1
注册表信息
NLS_LANG 默认为 SIMPLIFIED CHINESE_CHINA.ZHS16GBK
修改客户端的字符编码
1、修改注册表中数据库编码输出方式
注册表位置
计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Oracle\KEY_OraDB12Home1
按照数据库编码的输出改为(要与数据库编码格式一致)
SIMPLIFIED CHINESE_CHINA.US7ASCII
或者
AMERICAN_AMERICA.ZHS16GBK
或者
NLS_LANGUAGE=AMERICAN
2、进入 CMD DOS 界面后执行如下
SET NLS_LANG=AMERICAN_AMERICA.ZHS16GBK