问题描述
查询oracle数据时,中文字符出现问号形式的数据;sql使用like和等号无法匹配中文字符
环境:win7 32位;oracle 11g
错误分析
安装oracle 11g 时,受默认字符集影响;
查看oracle(NLS_LANG):
- WIN+R,然后在输入regedit–>回车;
- 最后通过该路径HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE;
发现NLS_LANG当时默认值AMERICAN_AMERICA.WE8MSWIN1252
解决中文字符出现问号
需要了解自己查询的数据库编码格式,当时只是能猜测数据库用到的字符集格式;分别试过AMERICAN_AMERICA.ZHS16GBK、AMERICAN_AMERICA.UTF8都不管用,最后发现设置成SIMPLIFIED CHINESE_CHINA.AL32UTF8值,成功解决问题!
注意
每次设置一个NLS_LANG的新值,都要重新启动PLSQl客户端。
后续发现问题
查询sql出现中文字符无法匹配问题
解决中文字符无法匹配问题
- 配置如图:
- 查询NLS_LANG字符集:
select userenv('language') from dual;
- 设置高级系统设置–>环境变量–>系统变量:
新建:NLS_LANG = 第二步查询到的值