MSXML.DOMDocument.4.0 loadXML,带有中文Unicode字符

时间:2012-04-13 12:59:51

标签: unicode msxml4

目前,我正在尝试在ASP中使用MSXML loadXML方法来加载可能包含Unicode中文字符的XML字符串,如

  

(U + 20BA2)4字节

,xml字符串看起来像

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

所以,在我的代码中,我可以看到xml字符串正确,但loadXML返回一条错误消息,如

  

无效的unicode字符,&amp; #55362;&安培;#57250

有人可以告诉我我可以做些什么来解决这个问题吗?

谢谢,

被修改

代码看起来像这样

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

2 个答案:

答案 0 :(得分:1)

我建议您发布完全代码,XML源代码和错误消息。我无法通过在MSXML 4.0 SP3中解析<element></element>来重现错误;这很好。

我确实通过尝试解析<element>&#55362;&#57250;</element>得到了一个parseError,原因是“无效的unicode字符”,因为那不是格式良好的XML。如果你在标记中确实有这个,那么你需要修复生成它的序列化器,因为MSXML和任何符合标准的XML解析器都不会加载它。

如果将变为字符引用,则必须为&#134050;(或&#x20BA2;)。代码单元55362和57250是'代理',保留用于编码UTF-16中的星体平面字符。它们不能包含在XML文档中。

答案 1 :(得分:0)

&#55362;&#57250;0xD842 0xDFA2的实体编码形式,它是Unicode 字符的UTF-16编码形式。确保XML完全是UTF-16编码,而不是混合的单字节ASCII和多字节UTF-16。