解决plsql显示问号(???)问题
Posted 任仁人
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了解决plsql显示问号(???)问题相关的知识,希望对你有一定的参考价值。
如何查看Oracle数据库的字符编码
1、查询Oracle Server端的字符集:
有很多种方法可以查出oracle server端的字符集,比较直观的查询方法是以下这种:
SQL>select userenv(‘language’) from dual;
结果如下:AMERICAN _ AMERICA. ZHS16GBK。
2、查询dmp文件的字符集:
用Oracle的exp工具导出的dmp文件也包含了字符集信息,dmp文件的第2和第3个字节记录了dmp文件的字符集。如果dmp文件不大,比如只有几M或几十M,可以用UltraEdit打开(16进制方式),看第2第3个字节的内容,如0354,然后用以下SQL查出它对应的字符集:
SQL> select nls_charset_name(to_number(\'0354\',\'xxxx\')) from dual;
ZHS16GBK
3、查询Oracle client端的字符集:
这个比较简单。在Windows平台下,就是注册表里面相应OracleHome的NLS_LANG。还可以在Dos窗口里面自己设置,比如:
set nls_lang=AMERICAN_AMERICA.ZHS16GBK
如果检查的结果发现Server端与Client端字符集不一致,请统一修改为同Server端相同的字符集。
原因:本机没有配置数据库字符集环境变量,或是与数据库字符集不一致。
步骤一:执行在plsql中执行 select userenv(\'language\') from dual; 语句来查看本机的字符集,或是执行 select * from V$NLS_PARAMETERS; 语句。两者的区别是第一种查看到的是拼接好的一条字符集数据,第二种是数据库详细配置参数有多条数据需要将 第一行,第二行,第九行的value数据以 第一行_第二行.第九行的格式拼接起来,我的拼接好好后是AMERICAN_AMERICA.ZHS16GBK
步骤二:在环境变量中添加两条配置信息,鼠标右键我的电脑(计算机/此电脑)等图标,选择属性,选择高级系统设置,选择高级选项卡的环境变量,在系统变量里新建两条配置:
1、LANG=zh_CN.GBK(GBK是这样形式的,不同编码这里的value值需要跟着改变)
2、NLS_LANG=AMERICAN_AMERICA.ZHS16GBK(这个value值就是我们步骤一中拼接好的那个值)
步骤三:这步也是至关重要的,到这里我们就配置好了,很多的博客与帖子都说重启plsql即可,但是我的并没有生效,需要重启电脑 生效,很重要。
Oracle字符集的查看查询和Oracle字符集的设置修改
以上是关于解决plsql显示问号(???)问题的主要内容,如果未能解决你的问题,请参考以下文章