Oracle字符集转换问题

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

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

现在想问在Oracle中有没有办法解决这个问题,比如有什么转换函数等。
...全文
229 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
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数据导出,在导入没有乱码

17,382

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧