2012-04-13 19 views
0

目前,我試圖在ASP中使用的MSXML loadXML的方法加載可能包含Unicode像MSXML.DOMDocument.4.0的loadXML與中國Unicode字符

(U + 20BA2)4字節字符中國XML字符串

和XML字符串看起來像

<City>City</City><Name></Name> 

所以,在我的代碼,我可以看到XML字符串進來吧,但loadXML的返回的誤碼M類似於

無效的Unicode字符,&#55362; &#57250

有人能告訴我我能做些什麼來解決這個問題嗎?

謝謝,

編輯

的代碼看起來是這樣的

Set objDoc = CreateObject("MSXML2.DOMDocument") 
objDoc.async = false 
objDoc.setProperty "SelectionLanguage", "XPath" 
objDoc.validateOnParse = false 
objDoc.loadXML(strXml) 

回答

1

我建議您發佈確切代碼,XML源和錯誤消息。我無法通過解析MSXML 4.0 SP3中的<element></element>來重現錯誤;這工作正常。

我當然會試圖解析<element>&#55362;&#57250;</element>,因爲它不是格式良好的XML,所以得到了一個parseError,其原因是「無效的Unicode字符」。如果你的標記中有這個,那麼你需要修正產生它的串行器,因爲MSXML和任何符合標準的XML解析器都不會加載它。

如果變成字符引用,它必須是&#134050;(或&#x20BA2;)。代碼單元55362和57250是'代理',用於編碼UTF-16中的星體平面字符。它們不能包含在XML文檔中。

+0

謝謝你的解釋,bobince。請看我編輯的問題。再次感謝! – user1317838 2012-04-16 17:48:01

+0

@ user1317838:好的,代碼片段沒什麼問題,'strXml'究竟是什麼,它是如何生成和加載的? – bobince 2012-04-16 20:55:18

+0

strXml是基於用戶提交的表單值動態構建的。我通過使用charCodeAt(index)來轉義字符。那麼,這是一個罪魁禍首? – user1317838 2012-04-17 04:11:12

0

&#55362;&#57250;0xD842 0xDFA2實體編碼的形式,其是Unicode 的UTF-16編碼的形式字符。確保XML完全是UTF-16編碼,而不是混合的單字節ASCII和多字節UTF-16。

+0

謝謝你的幫助,雷米。請看我編輯的問題。 – user1317838 2012-04-16 17:48:23

+0

你正在使用什麼編程語言,聲明瞭什麼樣的數據類型是'strXml',它是如何被XML內容填充的? – 2012-04-17 02:41:33