使用PLSQL Developer和DbVisualizer、SQLDBx查询oracle数据库时出现乱码

时间:2022-08-08 04:57:22

使用PLSQL Developer和DbVisualizer查询oracle数据库时,出现查询数据中文乱码情况。

查看了一下数据库编码格式
select * from v$nls_parameters;

使用PLSQL Developer和DbVisualizer、SQLDBx查询oracle数据库时出现乱码

查看编码值为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。

使用PLSQL Developer和DbVisualizer、SQLDBx查询oracle数据库时出现乱码

注意:配置环境变量的方式,可能导致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。