XmlTextAttribute和CDATA

时间:2008-12-15 14:02:37

标签: java xml serialization msxml

我们的应用程序中有一部分用户可以通过自定义的Wysiwyg组件创建包含HTML,JavaScript和CSS的对象。这些对象在某些时候被序列化并随后反序列化。但是,由于我们的用户/客户遍布全球,他们有时会输入在反序列化过程中引起不满的字符。最近,我看到出现在中国用户的序列化XML中,后来由于使用MSXML2通过一些Java代码加载XML而导致问题(同样不是.NET和System.Xml中的问题,但这是另一个问题)。我们目前仍然使用MSXML2,因此需要单独解决。

建议是将某些字段更改为CDATA,而不是今天的HtmlTextAttribute。

如何实现这一目标,是否会对此类更改前序列化的数据产生影响?

1 个答案:

答案 0 :(得分:0)

0x1D是一个没有人使用的ASCII控制字符,因此看起来中文用户的输入使用了一些非UTF-8编码,并且将其序列化为XML的代码错误地假设输入字节是Unicode代码点(并将它们序列化为字符实体引用。)

将其更改为CDATA将无效,因为序列化程序仍将输出mojibake。

最简单的解决方法是确保客户端应用程序始终使用UTF-8。

相关问题