pl/sql查询乱码问题

      

       今天遇到plsql查询乱码的问题,排查了好久才找到解决方案,特此记录,以便后查。

       我的问题是由于自己乱操作注册表引起的,之前因为版本问题我自己装的Oracle服务端不兼容,卸载时删除了一些Oracle开头的注册表,之后用plsql查询就出现了乱码。查询时凡是中文的就出现“???”的字样。然后就百度查询了好多帖子,解决方式很多,但是因为版本和系统问题,总得不到解决,最后在csdn上找到了一篇参考着解决了:https://blog.csdn.net/jiadajing267/article/details/54947800。

       接下来我会介绍问题经过。下面是我的基本配置。

       操作系统:win10.

       oracle客户端:win32_11gR2_client.

       oracle服务端:远程连接。

       出现乱码大多是Oracle客户端和服务端编码方式不一致或是plsql不能完全正确地导入客户端配置文件导致。

       步骤一:使用一个账号通过plsql登录连接oracle服务端。创建查询,在plsql中执行 select userenv('language') from dual;语句。这样是查询Oracle服务端的编码语言,我的是:SIMPLIFIED CHINESE_CHINA.ZHS16GBK。或是 select * from V$NLS_PARAMETERS; 语句,选取1,4,8条语句,三个字符拼接会得到和上面语句一样的字段。接下来就是让本地的编码方式修改为和服务端一样就行。

      步骤二:因为我先出问题是注册表所以就先从注册表开始。使用快捷键win+R,在运行‘regedit’命令进入注册表编辑界面,如果你是64位客户端,查询路径:HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_OraDB12Home1 \NLS_LANG,如果是32位客户端路径为:HKEY_LOCAL_MACHINE\SOFTWARE \WOW6432Node \ORACLE\KEY_OraDB12Home1 \NLS_LANG

选中查看,发现对应的名称为:SIMPLIFIED CHINESE_CHINA.ZHS16GBK,这是和服务端查询的一致,如果不一致就可以修改。

       步骤三,经过上面的步骤可以确认我的客户端编码是没有问题的,接下来我就怀疑是不是pl/sql没有完全加载客户端文件呢,打开pl/sql界面,帮助->支持信息->信息,可以查看导入路径文件和编码的配置信息。找到“Character Sets”字段,查看NLS_LANG对应的值,也是SIMPLIFIED CHINESE_CHINA.ZHS16GBK,这说明导入也没有问题。如果不一致就是plsql加载客户端配置文件有问题,大家可以百度下具体操作

       步骤四,上面都没有问题,接下来我就怀疑是服务端有问题,但这是不可能的,毕竟连的远程,人家什么都没操作过。所以我就去csdn搜索,发现可以修改环境变量的NLS_LANG值来操作,接下来有个坑。因为网上有两个版本,一是在系统变量里修改或新增两个变量LANG(看是gbk编码还是其他编码,这里对应的值不一样)或是NLS_LANG:

       LANG=zh_CN.GBK
      NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK。

重启plsql然后不能访问服务器,我又重启了电脑也不能访问服务器。

       接着我试着只使用NLS_LANG变量,接着只需重启plsql就行了。再查询问题就解决了。对于这个现象我怀疑应该是win10操作系统的问题(可能吧,有知道的可以评论或私信下)。

       补充,之前我还看到个版本但还是没有解决但我应该把它记录下来:控制面板--->时间和区域--->区域--->管理--->非Unicode程序中所使用的当前语言
更改系统区域设置里.   去掉 Beta版:使用Unicode UTF-8 提供全球语言支持(U),参考链接:https://com-zyq.iteye.com/blog/2425020

    第一次发贴希望多多交流,接下来我会继续分享我的学习成果和bug。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值