关于Oracle中文变问号的问题

来源:百度知道 编辑:UC知道 时间:2024/06/08 18:43:41
是这样的,我有一个shell脚本文件在unix服务器A上运行,该脚本执行时会从ftp服务器B中去txt文本数据到A,然后将txt文本数据导入在A上的Oracle数据库中,但是这样导入的中文全都变成了问号。后来我同事从本机(windows2003)将同样的数据导入到A上的Oracle中,中文显示就正常了,请问怎样做才能在A中导入到Oracle中的中文能够正常显示?
可是Oracle实例中还有其他数据库,强行修改服务器端ORACLE当前字符集 会不会影响其他数据库?

强行修改服务器端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数据库字符集已复原,这时再查看有汉字字符数据的表时,汉字已能被正确显示。

get的时候用binary不要用ascII。如果还有问题的话多是unix的字符集设置了。

--------------
不用修改oracle的字符集啊。
问题是你的脚本是在服务端运行还是客户端运行,从你给出的条件看这个脚本是在A上面运行的,暂且不管所传输的到底是文件还是数据或是图形,肯定最保险的方式是‘二进制码’。

你别信那个让你修改数据字典来更改字符集的,修改字符集oracle内部要修改12张表的,怎么可能通过一个就完成呢?!如果你的是10g的话,可以使用expdp/impdp数据泵来做,这个工具会进行字符集的校验和内部转换的。应该可以解决字符集的问题

你oracle字符集用的是gbk吧,unix一般是iso系列或者unicode,导入前转换一下。或者给你这个脚本单独设置locale