MSXML.DOMDocument.4.0 loadXML с китайскими символами Юникода

В настоящее время я пытаюсь использовать метод MSXML loadXML в ASP для загрузки строки XML, которая может содержать китайские символы Unicode, такие как

(U+20BA2) 4 байта

и строка XML выглядит

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

Итак, в моем коде я мог видеть, что строка xml появляется правильно, но loadXML возвращает сообщение об ошибке, подобное

Недопустимые символы Юникода, & #55362; & # 57250

Может кто-нибудь сказать мне, что я могу сделать, чтобы решить эту проблему?

Спасибо,

отредактированный

Код выглядит так

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

2 ответа

Решение

Я предлагаю опубликовать точный код, источник XML и сообщение об ошибке, которое вы получаете. Я не могу воспроизвести ошибку при разборе <element></element> в MSXML 4.0 SP3; это отлично работает

Я, конечно, получаю parseError с причиной "Неверный символ Юникода", пытаясь разобрать <element>&#55362;&#57250;</element>потому что это не правильно сформированный XML. Если у вас есть это в разметке, вам нужно исправить сериализатор, который его создал, потому что ни MSXML, ни какой-либо совместимый со стандартами анализатор XML не будут загружать его.

Если превращается в символьную ссылку, это должно быть &#134050; (или же &#x20BA2;). Кодовые единицы 55362 и 57250 являются "суррогатами", зарезервированными для кодирования символов астральной плоскости в UTF-16. Они не могут быть включены в документ XML.

&#55362;&#57250; это сущность, закодированная форма 0xD842 0xDFA2, которая является UTF-16-кодированной формой Unicode персонаж. Убедитесь, что XML полностью закодирован в UTF-16, не смешан однобайтовый ASCII и многобайтовый UTF-16.

Другие вопросы по тегам