Oracle导入导出字符集乱码问题.docx
文本预览下载声明
Oracle 导入导出字符集乱码问题
导出/导入与字符集
? 进行数据的导入导出时,我们要注意关于字符集的问题。在EXP/IMP过程中我们需要注意四个字符集的参数:导出端的客户端字符集,导出端数据库字符集,导入端的客户端字符集,导入端数据库字符集。
我们首先需要查看这四个字符集参数。
查看数据库的字符集的信息:
SQL select * from nls_database_parameters;
PARAMETER?????????????????????? VALUE
------------------------------ --------------------------------------------------------------------------------
NLS_LANGUAGE??????????????????? AMERICAN
NLS_TERRITORY??????????????????? AMERICA
NLS_CURRENCY??????????????????? $
NLS_ISO_CURRENCY??????????????? AMERICA
NLS_NUMERIC_CHARACTERS????????? .,
NLS_CHARACTERSET??????????????? ZHS16GBK
NLS_CALENDAR??????????????????? GREGORIAN
NLS_DATE_FORMAT???????????????? DD-MON-RR
NLS_DATE_LANGUAGE?????????????? AMERICAN
NLS_SORT????????????????????????? BINARY
NLS_TIME_FORMAT???????????????? HH.MI.SSXFF AM
NLS_TIMESTAMP_FORMAT??????????? DD-MON-RR HH.MI.SSXFF AM
NLS_TIME_TZ_FORMAT????????????? HH.MI.SSXFF AM TZH:TZM
NLS_TIMESTAMP_TZ_FORMAT???????? DD-MON-RR HH.MI.SSXFF AM TZH:TZM
NLS_DUAL_CURRENCY?????????????? $
NLS_COMP??????????????????????? BINARY
NLS_NCHAR_CHARACTERSET????????? ZHS16GBK
NLS_RDBMS_VERSION?????????????? 8.1.7.4.1
NLS_CHARACTERSET:ZHS16GBK是当前数据库的字符集。
?
我的windows oracle编码为:
NLS_NCHAR_CHARACTERSET?? ??? ?AL16UTF16NLS_CHARACTERSET?? ??? ?ZHS16GBK
?
我们再来查看客户端的字符集信息:
客户端字符集的参数NLS_LANG=_ territory .
language:指定oracle消息使用的语言,日期中日和月的显示。
Territory:指定货币和数字的格式,地区和计算星期及日期的习惯。
Characterset:控制客户端应用程序使用的字符集。通常设置或等于客户端的代码页。或者对于unicode应用设为UTF8。
在windows中,查询和修改NLS_LANG可在注册表中进行:
HKEY_LOCAL_MACHINE\SOFTWARE\Oracle\HOMExx
xx指存在多个Oracle_HOME时的系统编号。
我这里的windows默认为:
windows Client:NLS_LANG??? SIMPLIFIED CHINESE_CHINA.ZHS16GBK
?
在Linux redhat5中:
[oracle@ucit ~]$ cd 注意:cd 后是空格没有任何内容[oracle@ucit ~]$ vi .bash_profile
加上:
export NLS_LANG=Simplified Chinese_China.ZHS16GBK 注意:四个端的参数编码要一致
?
然后使用:env|grep NLS_LANG看正确没有
?
在unix中:
$ env|grep NLS_LANG
NLS_LANG=simplified chinese_china.ZHS16GBK
修改可用:
$ export NLS_LAN
显示全部