目前,我正在尝试在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)
答案 0 :(得分:1)
我建议您发布完全代码,XML源代码和错误消息。我无法通过在MSXML 4.0 SP3中解析<element></element>
来重现错误;这很好。
我确实通过尝试解析<element>��</element>
得到了一个parseError,原因是“无效的unicode字符”,因为那不是格式良好的XML。如果你在标记中确实有这个,那么你需要修复生成它的序列化器,因为MSXML和任何符合标准的XML解析器都不会加载它。
如果将变为字符引用,则必须为
𠮢
(或𠮢
)。代码单元55362和57250是'代理',保留用于编码UTF-16中的星体平面字符。它们不能包含在XML文档中。
答案 1 :(得分:0)
��
是0xD842 0xDFA2
的实体编码形式,它是Unicode 字符的UTF-16编码形式。确保XML完全是UTF-16编码,而不是混合的单字节ASCII和多字节UTF-16。