0

現在、ASPでMSXML loadXMLメソッドを使用して、次のようなUnicode漢字を含む可能性のあるXML文字列をロードしようとしています。

(U + 20BA2)4バイト

xml文字列は次のようになります

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

したがって、私のコードでは、xml文字列が正しく入力されていることがわかりますが、loadXMLは次のようなエラーメッセージを返します。

無効なUnicode文字、&#55362;&#57250

誰かがこの問題を解決するために私ができることを教えてもらえますか?

ありがとう、

編集済み

コードは次のようになります

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

2 に答える 2

1

取得した正確なコード、XMLソース、およびエラーメッセージを投稿することをお勧めします。<element></element>MSXML4.0SP3で解析してもエラーを再現できません。これは正常に機能します。

解析しようとすると<element>&#55362;&#57250;</element>、「無効なUnicode文字」という理由でparseErrorが発生します。これは、整形式のXMLではないためです。マークアップにこれがある場合は、MSXMLも標準に準拠したXMLパーサーもロードしないため、それを生成したシリアライザーを修正する必要があります。

が文字参照に変換される場合は、 (または)である必要があります。コードユニット55362および57250は「サロゲート」であり、UTF-16でアストラル界文字をエンコードするために予約されています。XMLドキュメントに含めることはできません。&#134050;&#x20BA2;

于 2012-04-14T10:22:26.773 に答える
0

&#55362;&#57250; is the entity encoded form of 0xD842 0xDFA2, which is the UTF-16 encoded form of the Unicode character. Make sure that the XML is completely UTF-16 encoded, not mixed single-byte ASCII and multi-byte UTF-16.

于 2012-04-13T19:59:37.813 に答える