Oracle 字符集小结(遇到一例子:查询结果列标题为汉字,但是显示为‘?')

Posted lipera

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Oracle 字符集小结(遇到一例子:查询结果列标题为汉字,但是显示为‘?')相关的知识,希望对你有一定的参考价值。

问题处理方式:

查询:select userenv(‘language‘) from dual;

对比电脑环境变量NLS_LANG的值与查询结果是否一致,如果不一致,修改电脑环境变量NLS_LANG

问题解决后通过查询资料对会话字符做了一些总结:

字符集分可为三类:

1、数据库服务器字符集;

SELECT * FROM NLS_DATABASE_PARAMETERS

NLS_DATABASE_PARAMETERS其来源于props$,是表示数据库的字符集。

2、客户端字符集环境

SELECT * FROM V$NLS_PARAMETERS;

SELECT USERENV(‘language‘) FROM DUAL;

USERENV、 V$NLS_PARAMETERS表示当前字符集环境。如果你在客户端执行,则表示客户端字符集环境。

其来源于v$parameter,表示客户端的字符集的设置,可能是参数文件,环境变量或者是注册表 

3、会话字符集环境

SELECT * FROM NLS_SESSION_PARAMETERS;

可以通过alter session set NLS_LANGUAGE=‘SIMPLIFIED CHINESE‘;修改会话字符集

它来源于v$nls_parameters,表示会话自己的设置,可能是会话的环境变量或者是ALTER SESSION完成,如果会话没有特殊的设置,将

与 V$NLS_PARAMETERS一致。

 

客户端的字符集要求与服务器一致,才能正确显示数据库的非Ascii字符。如果多个设置存在的时候,alter session>环境变量>注册表>参数文件 

字符集要求一致,但是语言设置却可以不同,语言设置建议用英文。如字符集是zhs16gbk,则nls_lang可以是American_America.zhs16gbk。 

 



以上是关于Oracle 字符集小结(遇到一例子:查询结果列标题为汉字,但是显示为‘?')的主要内容,如果未能解决你的问题,请参考以下文章

利用反射封装Oracle数据库表对应的VO对象

将oracle 查询结果列拼接为字符串

将oracle 查询结果列拼接为字符串

oracle 里SQL语句UNION怎么用

ORACLE因为字符集不同,进行中文条件查询,查询结果为空

LINUX7安装Oracle11g单实例小结