Oracle字符集转换问题

空中猎手 2011-01-11 11:36:24
数据库A:Oracle 8 字符集US7ASCII
数据库B:Oracle 10 字符集ZHS16GBK

我现在在oracle10上面建立了一个dblink,然后写了一个作业想把Oracle8的数据库定时导入到Oracle10。但插入的数据库都变成了乱码。

现在想问在Oracle中有没有办法解决这个问题,比如有什么转换函数等。
...全文
158 点赞 收藏 6
写回复
6 条回复
iihero 2011年01月11日
取8i的结果以后,将字符串从"iso-8859-1"转换成"gbk",再插入到10g,基本上就不会有问题了。
回复 点赞
xman_78tom 2011年01月11日
那就用 utl_raw 转换。
可以分步验证一下:
先将列值转换为二进制,验证其是否为正确的 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'))

回复 点赞
空中猎手 2011年01月11日
试了一下convert(colname,'ZHS16GBK','US7ASCII'),不灵~~~还是问号
回复 点赞
空中猎手 2011年01月11日
问一下具体怎么操作呢,我也知道要转字符集呀~~~哪个函数,语法怎么样的。请介绍一下了。谢谢。
回复 点赞
xman_78tom 2011年01月11日
先用 convert(colname,'ZHS16GBK','US7ASCII') 函数试试
回复 点赞
lxyzxq2008 2011年01月11日
使用UTL_FILE.PUTF_NCHAR将8i数据导出,在导入没有乱码
回复 点赞
发动态
发帖子
基础和管理
创建于2007-09-28

7175

社区成员

9.5w+

社区内容

Oracle 基础和管理
社区公告
暂无公告