oracle 中文显示为问号,怎么解决,客户端和服务端字符集一样的

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle 中文显示为问号,怎么解决,客户端和服务端字符集一样的相关的知识,希望对你有一定的参考价值。

Oracle数据库字符集最有用的参数是NLS_LANG参数,格式如下: NLS_LANG = language_territory.charset

anguage:服务器消息的语言, 是中文还是英文
Territory: 服务器的日期和数字格式,
Charset: 指定字符集。
登录以sysdba登录,查看视图select * from v$nls_parameters,可以知道具体的字符集参数,
正常的应该是
1NLS_LANGUAGE=SIMPLIFIED CHINESE

2NLS_TERRITORY=CHINA

3NLS_CHARACTERSET=ZHS16GBK
然后有问题就去修改参数文件里面的参数,最好做个备份哦!
因为改字符集有风险。
客户端设置(linux)
$NLS_LANG=“simplified chinese”_china.zhs16gbk
$export NLS_LANG
.数据库服务器字符集
select * from nls_database_parameters
是表示数据库的字符集,或者v$nls_parameters

客户端字符集环境
select * from nls_instance_parameters
或者v$parameter,表示客户端的字符集的设置,可能是参数文件,环境变量或者是注册表

会话字符集环境
select * from nls_session_parameters
v$nls_parameters,表示会话自己的设置,可能是会话的环境变量或者是alter session完成,如果会话没有特殊的设置,将与nls_instance_parameters一致。
以上都没问题 就会OK了,
(仅供参考,若有雷同纯属巧合)
参考技术A 字符集一样也需要看是否支持中文。
还是看看 客户端的字符集吧。

http://blog.csdn.net/andypeker/article/details/5472589

CSDN上有介绍字符集问题的,参照着看看吧
参考技术B bzd

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

Oracle数据库字符集最有用的参数是NLS_LANG参数,格式如下: NLS_LANG = language_territory.charset

anguage:服务器消息的语言, 是中文还是英文
Territory: 服务器的日期和数字格式,
Charset: 指定字符集。
登录以sysdba登录,查看视图select * from v$nls_parameters,可以知道具体的字符集参数,
正常的应该是
1NLS_LANGUAGE=SIMPLIFIED CHINESE

2NLS_TERRITORY=CHINA

3NLS_CHARACTERSET=ZHS16GBK
然后有问题就去修改参数文件里面的参数,最好做个备份哦!
因为改字符集有风险。
客户端设置(linux)
$NLS_LANG=“simplified chinese”_china.zhs16gbk
$export NLS_LANG
.数据库服务器字符集
select * from nls_database_parameters
是表示数据库的字符集,或者v$nls_parameters

客户端字符集环境
select * from nls_instance_parameters
或者v$parameter,表示客户端的字符集的设置,可能是参数文件,环境变量或者是注册表

会话字符集环境
select * from nls_session_parameters
v$nls_parameters,表示会话自己的设置,可能是会话的环境变量或者是alter session完成,如果会话没有特殊的设置,将与nls_instance_parameters一致。
以上都没问题 就会OK了,
参考技术A 这个是windows编码格式和oracle服务器编码不一致导致的。由于在dos下无法识别字符,导致输出问号。
客户端的字符集要求与服务器一致,才能正确显示数据库的非Ascii字符。
如果多个设置存在的时候,NLS作用优先级别:Sql function > alter session > 环境变量或注册表 > 参数文件 > 数据库默认参数
字符集要求一致,但是语言设置却可以不同,语言设置建议用英文。如字符集是zhs16gbk,则nls_lang可以是American_America.zhs16gbk。
参考技术B 修改一下字符集UTF-8或GBK 参考技术C 在CMD里设置一下字符集:
set NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK
不行的话在试试这个
set NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
参考技术D 安装数据库时字符集选择有问题

以上是关于oracle 中文显示为问号,怎么解决,客户端和服务端字符集一样的的主要内容,如果未能解决你的问题,请参考以下文章

在oracle数据库中插入的冷僻字都会变成问号,这个怎么解决。

Linux启动oracle数据库时,显示很多问号

PLSQL中table表中的汉字显示问号,装了汉化包之后还是问号,不知道怎么解决

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

oracle 插入中文查询显示乱码,问号是啥原因

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