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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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中文变问号

有什么办法把问号变成中文

数据库字符集设置不对,修改下就好了。
1、先用system和密码登陆SQLPLUS(如果不能直接以sys登陆到sqlplus的话),进入到sql*plus之后,可以通过conn / as sysdba转变为sysdba身份连接到数据库
2、开始修改编码
shutdown immediate;停止oracle服务以及监听。如果服务停止,这部可省略
startup mount;
alter system enable restricted session;
alter system set job_queue_processes=0;初始化设置job
alter database open;
alter database character set internal_use utf8;设置编码 (alter database character set internal_use ZHS16GBK;)(alter database character set internal_use WE8ISO8859P1;)
shutdown immediate; 关闭
startup; 重启
至此编码已经设置完成。
参考技术A 强行修改服务器端ORACLE当前字符集

在用imp命令加载数据前,先在客户端用sql*plus登录system DBA用户,执行下列SQL语句进行当前ORACLE数据库字符集修改:

SQL > create database character set US7ASCII
* create database character set US7ASCII
ERROR at line 1:
ORA-01031: insufficient privileges

你会发现语句执行过程中,出现上述错误提示信息,此时不用理会,实际上ORACLE数据库的字符集已被强行修改为US7ASCII,接着用imp命令装载数据。等数据装载完成以后,shutdown 数据库,再startup 数据库,用合法用户登录ORACLE数据库,在sql> 命令提示符下,运行select * from V$NLS_PARAMETERS,可以看到ORACLE数据库字符集已复原,这时再查看有汉字字符数据的表时,汉字已能被正确显示。
打字不易,如满意,望采纳。追问

这是复制的吧

参考技术B 在哪儿看到中文变成问号?

是数据库中存储的已经是问号了,

还是在哪个工具中查询出来的是问号?追问

pl/SQL里面插入就是问号了

追答

再详细一点吧?怎么插入就是问号?

数据库是什么字符集,客户端是什么字符集?

追问

能远程么

追答

你把问题描述清楚就行了。要学会提问。

追问

NSL_LANG=AMERICAN_AMERICA.us7ascii这是我环境变量里面的,我往数据库里面插入中文的字符串,查询的时候显示问号

追答

处理中文,怎么能用 us7ascii 呢

应该用utf-8 或者 GBK 之类的啊

数据的字符集呢?

追问

一开始用的GBK,也是问号,然后网上看见改成us7ascii了
NLS_LANGUAGE AMERICAN
NLS_TERRITORY AMERICA
加下 qq 447340379

本回答被提问者采纳

以上是关于cmd 连接oracle中文显示为问号???的主要内容,如果未能解决你的问题,请参考以下文章

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

oracle中文变问号

oracle11gR2中文全部显示为问号怎么解决

oracle填坑之PLSQL中文显示为问号

win10上cmd命令中文显示问号?

win10上cmd命令中文显示问号?