Oracle 导入.dmp乱码

0x00查询Oracle数据库字符编码

SQL> select userenv('language') from dual;


USERENV('LANGUAGE')
----------------------------------------------------
AMERICAN_AMERICA.AL32UTF8

0x02查看dmp文件字符编码

[root@linux5 ~]# cat /mnt/hgfs/2015-03-16-Library/one.dmp  |od -x|head -1|awk '{print $2 $3}'|cut -c 3-6
0345

查询0345是什么编码
SQL> select nls_charset_name(to_number('0345','xxxx')) from dual;

NLS_CHARSET_NAME(TO_NUMBER('03454','XXXX'
----------------------------------------
ZHS16GBK

0x03查看Linux字符集

#查看系统登录用户当前的字符集状态
[root@linux5 ~]# echo $LANG
zh_CN.UTF-8
命令:locale -a   查看本地的字符集
    locale -m   查看所有支持的字符集

0x04解决方案

把Oracle的客户端和Linux字符集调整成一致就可以了 应该是UTF-8包含了JA16EUCTILDE这个编码

0x05参考链接

如何解决乱码问题http://blog.chinaunix.net/uid-186064-id-2823338.html

oracle字符对照表http://docs.oracle.com/cd/B19306_01/server.102/b14225/applocaledata.htm#i634428

如何查看oracle数据库字符集http://blog.csdn.net/heianemo/article/details/7702749

遗留问题

IMP-00008: unrecognized statement in the export file:

Comments