DB2 代码从 Unicode 到 ISO8859-2 并返回
Posted
技术标签:
【中文标题】DB2 代码从 Unicode 到 ISO8859-2 并返回【英文标题】:DB2 Code conversion from Unicode to ISO8859-2 and back 【发布时间】:2016-10-07 13:39:11 【问题描述】:从包含拉脱维亚首都 (Rīga) 的 XML(UTF8 编码)中保存一些字符串时。里加来了这个我和马克龙 (Unicode) 到 DB2。
数据库代码页不是 Unicode,但不幸的是 ISO8859-2。 发生转换,这个特殊的 I 被 X'1A ((explained here IBM docs)) 取代
当我使用相同的列重现原始 XML 时,我的验证再次失败:
An invalid XML character (Unicode: 0x1a) was found in the element content of the document.
他们为什么选择无效的 XML 字符作为替换?做这种事情的首选方法是什么?
我们使用 Java 进行 XML 输入和输出,不需要用宏保存 I,某种替换字符就可以了,不会与 XML 混淆的字符。 过滤所有无法在数据库代码页中表示的字符不是个好主意吗?
【问题讨论】:
我认为答案在您所指的链接中——不要使用字符数据类型来绑定 XML 值,而是使用 XML 或二进制。 在 XML 声明中添加encoding=iso-8859-2
会有帮助吗?
没有固定xml编码
【参考方案1】:
您是否尝试将列转换回 unicode?p>
CAST(column AS VARCHAR(255) CCSID UNICODE )
【讨论】:
以上是关于DB2 代码从 Unicode 到 ISO8859-2 并返回的主要内容,如果未能解决你的问题,请参考以下文章