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>��</element>
потому что это не правильно сформированный XML. Если у вас есть это в разметке, вам нужно исправить сериализатор, который его создал, потому что ни MSXML, ни какой-либо совместимый со стандартами анализатор XML не будут загружать его.
Если превращается в символьную ссылку, это должно быть
𠮢
(или же 𠮢
). Кодовые единицы 55362 и 57250 являются "суррогатами", зарезервированными для кодирования символов астральной плоскости в UTF-16. Они не могут быть включены в документ XML.
��
это сущность, закодированная форма 0xD842 0xDFA2
, которая является UTF-16-кодированной формой Unicode персонаж. Убедитесь, что XML полностью закодирован в UTF-16, не смешан однобайтовый ASCII и многобайтовый UTF-16.