原数据库的字符集为we8iso8859p1                 目标数据库的字符集为zhs16gbk
通过对目标数据库的字符集(zhs16gbk)转换为we8iso8859p1,然后将原数据库中数据导到目标数据库,再对目标数据库字符集进行转换(从we8iso8859p1到zhs16gbk),中文显示正常。
但是exp工具导成dmp文件,用imp工具导入后,中文就无法正常显示了。我做过一个实验,在一张表为比如为table1中添加一个字段,在新加的字段里填写的中文可以正常显示,在表原有的字段里填写的中文无法正常显示,。(注通过dump显示的编码值是一样的也是这样)。请各位大侠分析下原因出在哪里??

解决方案 »

  1.   

    1、imp/exp工具都是带字符集工作的,所以源数据库与目标数据库字符集必须一致;
       可以通过其他方式导出/导入,比如文本文件形式。
    2、对表数据进行更改(添加字段/修改记录等),都是在当前字符集下完成的,当然没有乱码的问题;
      

  2.   


    首先非常感谢两位回帖。1、imp/exp工具都是带字符集工作的,所以源数据库与目标数据库字符集必须一致;
       可以通过其他方式导出/导入,比如文本文件形式。
    2、对表数据进行更改(添加字段/修改记录等),都是在当前字符集下完成的,当然没有乱码的问题;
    对于第1条,imp/exp工具都是当前已经正常显示了中文的字符集下进导入/导出的,应该说是不会发生转换动作的啊(因为导出和导入的字符集都是一样的)。
    对于第2条,我非常赞同你的看法,可是奇怪的事又发生了,在当前字符集下添加数据按理说是不会有乱码,但是在原有字段里输入的数据,在经过导出、导入之后还是会出现乱码,而新添加的字段的数据就不会出现乱码。这又是什么原因呢??