ORACLE 在 SQLPLUS 与 PL/SQL 中显示乱码的问题

Posted chendian0

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ORACLE 在 SQLPLUS 与 PL/SQL 中显示乱码的问题相关的知识,希望对你有一定的参考价值。


Linux下SQLPlus中文乱码处理的方法
1.首先查询数据库字符集 SQL> select userenv(language) from dual; USERENV(LANGUAGE) ---------------------------------------------------- AMERICAN_AMERICA.AL32UTF8 SQL> exit 从上面得知数据库字符集为 AMERICAN_AMERICA.AL32UTF8 2.配置环境变量 echo export NLS_LANG="AMERICAN_AMERICA.UTF8">>/etc/profile source /etc/profile 或者 echo export NLS_LANG="AMERICAN_AMERICA.AL32UTF8">>/etc/profile source /etc/profile 3.再次查询即可正常识别中文 原因分析: sqlplus乱码与操作系统NLS_LANG变量有关,当数据库字符集与NLS_LANG变量不一致就产生乱码。

 

PL/SQL  中设置中文格式,避免乱码

最近新买的电脑,配置好数据库连接后,plsql查看数据与插入中文数据都显示问号(???),同事的都正常显示,查看了很多资料,有的说是数据库字符集的原因让修改数据库的字符集,但是我的数据库都是远程连接正式环境的数据库,修改正式库的字符集是不可能了,毕竟别人的都好使。后来终于得以解决,下面我来详细介绍如何解决的(简单好用):

原因:本机没有配置数据库字符集环境变量,或是与数据库字符集不一致。

步骤一:执行在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即可,但是我的并没有生效,需要重启电脑 生效,很重要。
(设置到Administrator的用户变量,然后重启plsql客户端就可以了,不用重启操作系统,这个我试过了可以的。)
--------------------- 作者:zhang_yanchao 来源:CSDN 原文:https://blog.csdn.net/zhang_yanchao/article/details/79092711 版权声明:本文为博主原创文章,转载请附上博文链接!

 

以上是关于ORACLE 在 SQLPLUS 与 PL/SQL 中显示乱码的问题的主要内容,如果未能解决你的问题,请参考以下文章

Windows 64位 安装Oracle instantclient 官方绿色版和PL/SQL Developer 总结

oracle中plsql与sqlplus的区别是啥啊?它们分别用来做啥啊?

Oracle Database 19c 技术架构

Oracle Database 19c 技术架构

sqlplus如何连接oracle数据库?

ORACLE 在 SQLPLUS 与 PL/SQL 中显示乱码的问题