linux下,oracle的视图中中文变问号了,描述有点长,请不吝赐教

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux下,oracle的视图中中文变问号了,描述有点长,请不吝赐教相关的知识,希望对你有一定的参考价值。

数据的整理工作
数据库建库和导入数据的任务是在win2003上完成的,然后将03上面的数据导出成.dmp文件,我注意了下,03上oracle版本10g,字符集是SIMPLIFIED CHINESE_CHINA.ZHS16GBK,表中的每个字段都有中文描述,表中有部分字段值为0 或 1,在视图里,我用case when将其转为中文。

数据发布到Linux系统
我用命令行将dmp文件导入到linux下的oracle中,版本10g,字符集是AMERICAN_AMERICA.ZHS16GBK,此时,列的中文描述信息和视图中的中文都变成了“????”(我是通过将linux下数据库导出成dmp,再导入03上的oracle后发现的),但是表中的中文数据正常;另外,在linux的命令行中使用sql语句查询表的中文字段,显示的结果中,中文也显示的是“????”。

参考技术A 这个是字符集转换的问题,是你导出和导入的客户端字符集和dmp文件字符集不一致。
解决办法:
在linux环境变量里加上
export LANG =zh_CN.gb2312

或者导入的时候先输入export LANG =zh_CN.gb2312追问

可否留联系方式或QQ?

追答

你留下邮箱,我发一份公司的字符集资料到你邮箱好了!

追问

457898913@qq.com

本回答被提问者和网友采纳
参考技术B 导入时因为两边字符集不同所以出现乱码很正常,建议10重新建库,字符集和2003选成一样的,
linux下导入时配NSL_LANG变量,
LANG变量是针对系统的,NSL_LANG才是数据库用的
参考技术C 估计是编码的问题,导入导出的时候选择合适的编码. 参考技术D 给我个资料,遇到和你一样的问题 wyf_vc@163.com 谢谢!! 第5个回答  2012-12-02 字符集的问题

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 安装数据库时字符集选择有问题

以上是关于linux下,oracle的视图中中文变问号了,描述有点长,请不吝赐教的主要内容,如果未能解决你的问题,请参考以下文章

java插入中文到oracle变问号

suse linux下oracle中文显示成问号,怎样修改oracle编码

mysql命令行导入sql脚本中文变问号问题

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

中文变问号问题

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