我们有我们的应用程序的一部分,我们的用户可以通过定制的所见即所得组件创建包含HTML,JavaScript和CSS的对象。这些对象在某些时候被序列化,然后被反序列化。然而,由于我们的用户/客户端分布在全球各地,他们有时会在反序列化过程中输入导致不满的字符。最近,我看到出现在来自中国用户的序列化的XML中,这引起了后来的问题,因为使用MSXML2通过一些Java代码加载XML (在.NET和System.Xml中同样不是问题,但那是另一个问题)。我们目前被MSXML2卡住了,所以这个问题需要单独解决。
一个建议是更改一些字段,使其序列化为CDATA,而不是今天的HtmlTextAttribute。
我如何实现这一点,它会对在这样的更改之前序列化的数据产生影响吗?
发布于 2012-12-23 05:37:13
0x1D是一个没有人使用的ASCII控制字符,因此中文用户的输入似乎使用了某种非UTF-8编码,并且将其序列化为XML的代码错误地假设输入字节是Unicode代码点(并将它们序列化为字符实体引用)。
仅仅将其更改为CDATA是行不通的,因为序列化程序仍然会输出mojibake。
最简单的修复方法是确保客户端应用程序始终使用UTF-8。
https://stackoverflow.com/questions/368442
复制相似问题