oracle 显示正常输出到界面为问号

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle 显示正常输出到界面为问号相关的知识,希望对你有一定的参考价值。

语句select userenv('language') from dual;查询出来结果是SIMPLIFIED CHINESE_CHINA.AL32UTF8
在数据库调试输出也是中文,但是到界面输出就全是问号

这种问题据我所知在两种情况下会出现,
1、数据库里存放的是韩文之类的非简体中文,而客户端未安装对应的语音包,那么显示有可能就都为“?”或“口”;
2、服务器或客户端无法识别此类编码,请先查看服务器是否可以识别,如果可以在查客户端是否识别服务器传输的编码
参考技术A dual要大写

Oracle使用——PLSQL的中文乱码显示全是问号


问题


        这两天刚将PLSQLOracle配置好,但是在PLSQL中插入数据时。出现一个问题,PLSQL中的表里无法显示中文,中文无法保存、无法输出。中文在表中显示问号。如图:

技术分享

 

 


原因


        经过一番查证,发现问题的源头不是出如今PLSQL上,而是出如今我们的Oracle上,因为我们的Oracle数据库里的字符集不支持中文导致的。既然知道了原因。就好办了。我们就配置我们的Oracle字符集,让他支持中文。

 


解决的方法


我的Oracle11g版本号的,以下以我的为例,为大家解说下设置的过程。

 

步骤一


        開始-执行-输入regedit-回车进入注冊表。依次单击HKEY_LOCAL_MACHINE--->SOFTWARE ---> ORACLE--->KEY_OraDb11g_home1(不同版本号的Oracle显示的都不太一样,但都会包括home这个单词),找到NLS_LANG,查看数值数据是否为:SIMPLIFIED CHINESE_CHINA.ZHS16GBK”。假设不是就将它设置为“SIMPLIFIED CHINESE_CHINA.ZHS16GBK

 

如图

技术分享

 

 


步骤二


       设置完注冊表后,接下来设置我们的环境变量,计算机(右键) --->属性--->高级系统设置--->高级--->环境变量--->新建。个人建议新建用户变量。变量名输入:“NLS_LANG”。变量值输入:“SIMPLIFIED CHINESE_CHINA.ZHS16GBK”。点击确定就可以。到此我们就设置完了。

如图

技术分享

 


效果


      以下就看下我们的效果,关闭PLSQL,又一次启动,中文果然出现了,

技术分享

 

 


后记


       环境变量让我们在开发中方便了非常多,可是它也是好多问题的“万恶之源泉”,让人痛并快乐着的环境变量啊。


















以上是关于oracle 显示正常输出到界面为问号的主要内容,如果未能解决你的问题,请参考以下文章

oracle中文变问号

oracle填坑之PLSQL中文显示为问号

java插入中文到oracle变问号

cmd 连接oracle中文显示为问号???

为啥MySql的表记录中有些中文显示问号

oracle数据库里中文显示不出来 全是问号