使用PLSQL Developer和DbVisualizer查询oracle数据库时,出现查询数据中文乱码情况。
查看了一下数据库编码格式
select * from v$nls_parameters;
查看编码值为WE8ISO8859P1。而电脑环境变量NLS_LANG的值为AMERICAN_AMERICA.ZHS16GBK。更改为
AMERICAN_AMERICA.WE8ISO8859P1之后重启工具就好了。如果没有此环境变量,可以新建一个,将编码值更改为一致。
我的机器到此就好使了,据说有的需要更改注册表中值。
运行---->regedit-------->F3查找NLS_LANG----->修改注册表(谨慎)
HKEY_LOCAL_MACHINE/SOFTWARE/ORACLE/HOMEO/NLS_LANG
该项值改为和数据库服务端一致
注:如果不放心,修改该键值:HKEY_LOCAL_MACHINE/SOFTWARE/ORACLE/ALL_HOMES/ID0/NLS_LANG。
注意:配置环境变量的方式,可能导致SqlDBx乱码,运行编码相关文件后,需要去除环境变量,SqlDBx才好使。
附: http://www.2cto.com/database/201307/227445.html
PLSQL显示乱码-无法进行中文条件查询解决
原因:
PLSQL乱码问题皆是ORACLE服务端字符集编码与PLSQL端字符集编码不一致引起。类似乱码问题都可以从编码是否一致上面去考虑。
解决:
1. 查询Oracle服务端字符集编码,获取NLS_CHARACTERSET字段值:
执行
sql代码
select * from v$nls_parameters
保存查询到的值,如:NLS_CHARACTERSET = AL32UTF8
2. 查询Oracle服务端语言信息:
执行
sql代码
NLS_CHARACTERSET
SELECT 'AMERICAN_AMERICA.' || PROPERTY_VALUE
FROM DATABASE_PROPERTIES
保存查询到的值,如:AMERICAN_AMERICA.AL32UTF8
3. 设置本地环境变量。(PLSQL优先从环境变量中获取属性)
右击 我的电脑 -> 属性 -> 告警系统属性 -> 高级 -> 环境变量 -> 系统变量栏
新增如下两条记录:
NLS_CHARACTERSET = AL32UTF8 NLS_LANG = AMERICAN_AMERICA.AL32UTF8
4. 重启PLSQL,OK。