2008-12-15 58 views
1

我們有一部分應用程序,我們的用戶可以通過定製的Wysiwyg組件創建包含HTML,JavaScript和CSS的對象。這些對象在某些時候被序列化,然後被反序列化。但是,由於我們的用戶/客戶遍佈全球,因此他們有時會輸入在反序列化過程中引起投訴的人物。最近,我看到出現在中國用戶的序列化XML中,後來由於通過一些使用MSXML2的Java代碼加載XML而導致出現問題(在.NET和System.Xml中這同樣不是問題,但那是另一個問題問題)。我們目前堅持使用MSXML2,因此需要單獨解決。XmlTextAttribute和CDATA

建議是將某些字段更改爲CDATA而不是HtmlTextAttribute,因爲它們就像今天一樣。

我該如何做到這一點,它會對這種變化之前序列化的數據產生影響?

+0

你使用什麼編碼? – Tomalak 2008-12-15 14:25:57

回答

0

0x1D是一個沒有人使用的ASCII控制字符,所以似乎中國用戶的輸入使用了一些非UTF-8編碼,並且將其序列化爲XML的代碼錯誤地假定輸入字節是Unicode代碼點(並將它們序列化爲字符實體引用)。

只要將其更改爲CDATA將不起作用,因爲串行器仍將輸出mojibake。

最簡單的修復方法就是確保客戶端應用程序始終使用UTF-8。