数据库A:Oracle 8 字符集US7ASCII
数据库B:Oracle 10 字符集ZHS16GBK我现在在oracle10上面建立了一个dblink,然后写了一个作业想把Oracle8的数据库定时导入到Oracle10。但插入的数据库都变成了乱码。现在想问在Oracle中有没有办法解决这个问题,比如有什么转换函数等。
数据库B:Oracle 10 字符集ZHS16GBK我现在在oracle10上面建立了一个dblink,然后写了一个作业想把Oracle8的数据库定时导入到Oracle10。但插入的数据库都变成了乱码。现在想问在Oracle中有没有办法解决这个问题,比如有什么转换函数等。
可以分步验证一下:
先将列值转换为二进制,验证其是否为正确的 ASCII 编码
utl_raw.cast_to_raw(colname)
再进行编码转换,验证转换后是否为正确的 ZHS16GBK 编码
utl_raw.convert(utl_raw.cast_to_raw(colname),'AMERICAN_AMERICA.ZHS16GBK','AMERICAN_AMERICA.US7ASCII')
最后转换为字符类型
utl_raw.cast_to_varchar2(utl_raw.convert(utl_raw.cast_to_raw(colname),'AMERICAN_AMERICA.ZHS16GBK','AMERICAN_AMERICA.US7ASCII'))