oracle 数据转编码问题--------现在oracle一个数据库A里面的数据全是gbk编码,我如何将这些数据gbk转化成utf8? 之前有个试验 我将数据库导出dmp文件,再建立utf8的结构一样的数据库,但是这样出错,乱码有的.有没有办法转化后没有出错和出现数据乱码.在这里谢谢各位了oracle gbk 转化 utf8

解决方案 »

  1.   

    gbk转utf8不会有乱码的,exp导出和imp导入时设置nls_lang为utf8就可以了
      

  2.   

    就是我用exp将表中gbk编码的数据拿出来,放到utf8编码的表中不会出现乱码?有没有例子?
      

  3.   

    绝对不会,导入和导出之前设好参数NLS_LANG就可以了:Linux:
    export NLS_LANG=AMERICAN_AMERICA.UTF8Windows:
    set NLS_LANG=AMERICAN_AMERICA.UTF8
      

  4.   

    就是将gbk的 NLS_LANG设成UTF8后再导出,导入之前设好NLS_LANG再导入?
      

  5.   

    exp导出时候,所在客户端编码NLS_LANG如果为utf8,导出时候就会进行一次gbk->utf8的转码,
    imp导入时候,保证客户端也是utf8就行了,不会进行转码
    据说是后者字符集是前者的超集就没问题
      

  6.   

    但是我试了一下之前是gbk的编码ZHS16GBK 我将NLS_LANG设为AL32UTF8 好像varchar2 转化没出错,用nvarchar2转化后汉的中文 变成了 其他字
      

  7.   

    没转化前 select dump('汉') from dual;这语句返回时正确的, 数据库编码是ZHS16GBK,set NLS_LANG=AMERICAN_AMERICA.AL32UTF8 命令后,再进入select dump('汉') from dual;这语句返回时'??';这有关系到吗?