INFO: XML-Codierung und DOM-Methoden

Zusammenfassung

Ein großer Vorteil der Extensible Markup Language (XML) Daten ist es plattformunabhängig. Allerdings muss korrekte Codierung angegeben werden zum richtigen XML-Daten zwischen verschiedenen Plattformen zu gewährleisten. Im Whitepaper "Wie zum Codieren XML-Daten"-Probleme allgemeine XML-Codierung im Detail:
In den meisten Szenarien stammen der anderen Standard-Kodierung Einstellungen von Microsoft XML Parser (MSXML) Methoden und Schnittstellen XML-Codierungsfehler. Diese Standardeinstellungen verstehen hilft die Codierung Fehler.

Weitere Informationen

XML-Codierung

MSXML unterstützt alle Codierung von Microsoft Internet Explorer unterstützt. Support für Internet Explorer hängt davon ab, welche Language Packs auf dem Computer installiert sind. Diese Informationen werden unter dem folgenden Registrierungsschlüssel gespeichert:
HKEY_CLASSES_ROOT\MIME\Database\Charset
MSXML bietet systemeigene Unterstützung für die folgenden Codierung:
UTF-8
UTF-16
UCS-2
UCS-4
ISO-10646-UCS-2
UNICODE-1-1-UTF-8
UNICODE-2-0-UTF-16
UNICODE-2-0-UTF-8
Es erkennt auch (intern mit WideCharToMultibyte API-Funktion für Zuordnungen) folgende Codierung:
US-ASCII
ISO-8859-1
ISO-8859-2
ISO-8859-3
ISO-8859-4
ISO-8859-5
ISO-8859-6
ISO-8859-7
ISO-8859-8
ISO-8859-9
WINDOWS-1250
WINDOWS-1251
WINDOWS-1252
WINDOWS-1253
WINDOWS-1254
WINDOWS-1255
WINDOWS-1256
WINDOWS-1257
WINDOWS-1258
Die Kodierung für die Daten angeben wird die XML-Deklaration. Beispielsweise wenn Daten mit ISO-8859-1 codiert ist, können Sie dies wie folgt angeben:
<?xml version="1.0" encoding="ISO-8859-1"?>
Ohne diese Informationen ist die standardcodierung UTF-8 oder UTF-16, je nachdem, ob ein Unicode-Byte Order Mark (BOM) am Anfang der XML-Datei. Wenn die Datei mit einem Unicode-Bytereihenfolgemarke (0xFF 0xFE beginnt) oder (0xFE 0xFF) das Dokument gilt in UTF-16-Codierung. Andernfalls wird es in UTF-8. Die Save -Methode der IXMLDOMDocument -Schnittstelle behält die ursprüngliche Codierung des Dokuments. Der Standardwert für diese Methode ist UTF-8.

MSXML DOM-Fehler

Zwei häufige Fehler, die vom XML-Dokument (DOKUMENTOBJEKTMODELL) Schnittstellenmethoden zurückgegeben werden:
Ein ungültiges Zeichen wurde im Textinhalt gefunden.
- und -
Wechseln zwischen aktueller und angegebener Verschlüsselung wird nicht unterstützt.
Mit der load -Methode der IXMLDOMDocument -Schnittstelle treten diese Fehler in folgenden Situationen:
  • Keine Codierung angegeben ist und keine Bytereihenfolge-Marke befindet sich am Anfang der XML-Datei Daten enthält Sonderzeichen
  • Die angegebene Codierung entspricht nicht der tatsächlichen Codierung von XML-Daten.
Eine gute Vorgehensweise ist immer die richtige Codierung innerhalb der XML-Deklaration, statt den Standardzeichensatz akzeptieren angeben.

IXMLDOMDocument Versionen 2.5 und 2.5 SP1 2.6, die LoadXML -Methode können nur mit dem MSXML-Parser UTF-16 oder UCS-2-codierte Daten laden. Jeder Versuch, die XML-Daten laden, die mit einer anderen Codierung Format die Fehlermeldung codiert:
Wechseln zwischen aktueller und angegebener Verschlüsselung wird nicht unterstützt.
Mit der Veröffentlichung von MSXML 3.0 (Msxml3.dll) diese Einschränkung entfernt, und der folgende Code wird fehlerfrei ausgeführt:
hr = pXMLDoc->loadXML("<?xml version=\"1.0\" encoding=\"UTF-8\"?><tag1>Abcdef</tag1>");
HINWEIS: die XML- Eigenschaft der IXMLDOMDocument -Schnittstelle schreibt die XML-Daten als UTF-16-codierte ohne Bytereihenfolge-Markierung am Anfang. Dies kann zu Codierung Problemen führen.

Sie erhalten auch diese Fehler beim Aufruf von TransformNode -Methode der IXMLDOMNode -Schnittstelle mit einer XSL- oder XSLT-Datei in der XML-Codierung Informationen wie folgt angegeben wird:
<xsl:output method="xml" encoding="UTF-8" />
Die TransformNode -Methode gibt einen BSTR UTF-16-codierte Daten per Definition ist. Eine bessere Möglichkeit zur Codierung beibehalten soll die
Methode für TransformNodeToObject Speicher die Ergebnisse in einem Stream oder eine neue XML-Dokument und speichern Sie sie.

Referenzen

Klicken Sie für Weitere Informationen auf die nachstehende Artikelnummer, um den Artikel in der Microsoft Knowledge Base anzuzeigen:

259555 PRB: Fehler beim Öffnen eines ADO-Recordsets im XML-Stream
Die neueste XML-Downloads und Informationen finden Sie auf der folgenden Microsoft Developer Network (MSDN)-Website:
Eigenschaften

Artikelnummer: 275883 – Letzte Überarbeitung: 09.01.2017 – Revision: 1

Feedback