为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:8
【操作系统】:麒麟V10
【CPU】:Phytium,D2000/8E8C
【问题描述】*:原表是在mysql中创建的字段类型是 LONGBLOG,从mysql迁移到达梦,迁移完成后,自动转换位BLOB,通过web页面写入汉字到blob字段,通过DM管理工具执行
SELECT
utl_raw.cast_to_varchar2(dbms_lob.substr(表.列))
from 表
结果显示乱码
我大概测试出来了原因:MySQL采用的是utf8编码,而达梦采用的是gbk编码,验证过程:
SELECT hex('好'),hex(convert('好' using gbk)),hex(convert('好' using utf8))
SELECT hex('好'),hex(convert('好' ,'ZHS16GBK')),hex(convert('好' , 'utf8'))
SELECT CONVERT(c1 USING UTF8),CONVERT(c1 USING GBK) FROM test1.`t123`
结论: BLOB字段在MySQL中以UTF8的编码格式存为16进制,但在DM中被以ZHS16GBK编码方式反编码,所以乱码。
解决思路:
以上是个人拙见,及简单的测试,请各位大佬看看具体咋设置或解决。