2012-04-13 2 views
0

В настоящее время я пытаюсь использовать метод MSXML loadXML в ASP, чтобы загрузить XML-строку, которая может содержать Unicode китайские символы, такие какMSXML.DOMDocument.4.0 loadXML с китайскими символами 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) 

ответ

1

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

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

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

+0

Спасибо за ваше объяснение, bobince. См. Мой отредактированный вопрос. Еще раз спасибо! – user1317838

+0

@ user1317838: ОК, ничего плохого в фрагменте кода, что именно находится в 'strXml' и как оно было сгенерировано и загружено? – bobince

+0

strXml динамически построена на основе значений форм, представленных пользователем. Я избегаю символа, используя charCodeAt (index). Итак, это преступник? – user1317838

0

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

+0

Спасибо за помощь, Реми. См. Мой отредактированный вопрос. – user1317838

+0

Какой язык программирования вы используете, какой тип данных называется 'strXml', и как он заполняется содержимым XML? –