PL/SQL Developer 解决中文乱码问题

こ雲淡風輕ζ 提交于 2019-12-03 11:21:24

前 沿-可以根据语言环境展示不同的符号 参考

NLS (National Language Support) is used to define national date, number, currency and language settings. For example, it can be used to change the currency symbol from $ to € (Euro); the language from English to Dutch, etc.

To see what NLS parameters are in effect, perform the below queries -

Client parameters (change with ALTER SESSION):

SELECT * FROM nls_session_parameters;## 优先级最高

Instance parameters (change with ALTER SYSTEM):

SELECT * FROM nls_instance_parameters;## 优先级第二高

Database parameters (set during database creation):

SELECT * FROM nls_database_parameters;

Note that session parameters take precedence over instance and database parameters. Instance parameters take precedence over database parameters.


一、查看当前用户客户端设置的语言环境 

参考了博文 


NLS_LANG格式:
NLS_LANG = language_territory.charset
有三个组成部分(语言、地域和字符集),每个成分控制了NLS子集的特性。其中:language 指定服务器消息的语言。territory 指定服务器的日期和数字格式。charset 指定字符集。


简单版本:首先,通过 

select userenv('language') from dual;


GBK如下:

windows中创建一个名为“NLS_LANG”的系统环境变量,

设置其值为SIMPLIFIED CHINESE_CHINA.ZHS16GBK,然后重新启动 pl/sql developer,这样检索出来的中文内容就不会是乱码了。 一般情况下,设置NLS_LANG和区域语言之后就可以显示正常了。


二、检查服务器编码:

执行SQL语法:

SELECT * FROM nls_database_parameters;  

说明:#虽然我的 database设置的 America 但是它优先级没有我们设置的NLS 高,所以会优先按照我们所设置的中文显示。不一定非要和NLS设置的一致,很多博文都说必须一致,应该是不准确的。


3.重新连接sqlplus,查看数据:

显示正常.

4.PL/SQL Developer设置并重新连接:

pl/sql developer的菜单->tools->preferences->user interface->fonts 中修改为中文字体(实际测试不修改也行)

重新连接,如图:

显示正常.OK!

三、如果是windows 的display language 是English

需要修改location和administrative 下面的language for non-unicode programs




易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!