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 并返回的主要内容,如果未能解决你的问题,请参考以下文章

java 中编码解码问题

彻底搞清楚字符编码: ASCII, ISO_8859, GB2312,UCS, Unicode, Utf-8

HTML ISO-8859-1 速查

python中把ISO-8859-1编码转化为UTF-8

实体代码

将字符串从 UTF-8 转换为 ISO-8859-1