【问题标题】:XmlTextAttribute and CDATAXmlTextAttribute 和 CDATA
【发布时间】:2008-12-15 14:02:37
【问题描述】:

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

一个建议是改变一些字段序列化为 CDATA,而不是像现在这样的 HtmlTextAttribute。

我怎样才能做到这一点,它会对在这种更改之前序列化的数据产生影响吗?

【问题讨论】:

  • 您在文档声明中指定编码和语言吗?

标签: java xml serialization msxml


【解决方案1】:

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

仅将其更改为 CDATA 是行不通的,因为序列化程序仍将输出 mojibake。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-22
    • 1970-01-01
    • 2013-03-19
    相关资源
    最近更新 更多