Benutzer mit den meisten Antworten
MSXML unterstützt ISO 8859-15 manchmal nicht?

Frage
-
Ich nutze in per DomDocument erzeugten XMLs ISO-8859-15 als encoding, da das Eurozeichen verwendet wird. Bei einem (von mehreren) Anwender liefert ein Load vonden ParseError -1072896658 "Die angegebene Verschlüsselung wird nicht unterstützt." Zeile 1 Position 44.
<?xml version="1.0" encoding="ISO-8859-15"?><Testknoten><hallo>@~äöü߀</hallo></Testknoten>
Nun habe ich versucht, herauszufinden, in welchem msxml-Paket oder ab welchem SP dieses encoding enthalten ist. Leider bin ich über google und msdn nicht fündig geworden. Auf meinen Rechnern mit XP und Windows 7 sowie bei etlichen Anwendern funktioniert das ohne Probleme. Nur bei einem eben nicht.Kann mir hier jemand einen Tipp geben?Vielen Dank
Antworten
-
Haben jetzt auf UTF-8 umgestellt - damit sind bisher keine Probleme aufgetreten. (Aber das dachten wir ja anfangs bei ISO-8859-15 auch :( )
- Als Antwort markiert Robert BreitenhoferModerator Montag, 28. November 2011 12:12
Alle Antworten
-
Hallo awalli,
Ich habe folgendes gemacht:
VBA Code laufen lassen:
Sub CreateExample(Encoding, FileName) Dim XmlDocument, Loaded, Element Set XmlDocument = CreateObject("Msxml2.DOMDocument.6.0") XmlDocument.async = False Loaded = XmlDocument.LoadXML("<?xml version=""1.0"" encoding=""" & Encoding & """?><Testknoten />") Set Element = XmlDocument.createElement("hallo") Element.appendChild (XmlDocument.CreateTextNode("Text with non-ASCII symbols: à‚¬, à¤, à¶, à" + Chr(128))) '//Alt+0128 ist das Euro-Symbol XmlDocument.DocumentElement.appendChild (Element) XmlDocument.Save FileName End Sub Sub RunAll() CreateExample "UTF-8", "C:\Filme\test01.xml" CreateExample "Windows-1252", "C:\Filme\test02.xml" CreateExample "ISO-8859-15", "C:\Filme\test03.xml" End Sub
Im Internet Explorer 9 durch File -> Open und die Datei C:\Filme\test03.xml aufgemacht
Ergebnis (man sieht das € Symbol):
Manuelle Variante: Die Datei C:\Filme\test03.xml:
<?xml version="1.0" encoding="ISO-8859-15"?>
<Testknoten><hallo>Text with non-ASCII symbols: à‚¬, à¤, à¶, à€</hallo></Testknoten>
wie folgt ändern:
<?xml version="1.0" encoding="ISO-8859-15"?>
<Testknoten><hallo>Text with non-ASCII symbols: à‚¬, à¤, à¶, à€</hallo></Testknoten>
Beim Aufruf der Save-Methode wird das Dokument dann mit dem entsprechenden Encoding serialisiert.
So Du ein XML-Dokument dann von einer URL oder aus einer Datei lädst, so erkennt der Parser an Hand der XML-Deklaration das Encoding.
Noch zum lesen: Euro-XML
Grüße,
Robert
- Bearbeitet Robert BreitenhoferModerator Donnerstag, 10. November 2011 16:04 Formatierung
-
Hallo Robert,
vielen Dank für deine ausführliche Antwort.
Leider habe ich dich durch mein Test-XML anscheinend auf eine falsche Fährte gebracht. Unabhängig von dem Inhalt - also auch ohne Umlaute - wird beim Laden das Encoding ISO-8859-15 abgelehnt. Allerdings nur bei einem Anwender. Dort ist der IE 8 installiert, aber das ist auf meinem XP-Rechner auch so, und bei mir und etlichen anderen Anwendern funktioniert es ja.
Also auch
<?xml version="1.0" encoding="ISO-8859-15"?><Testknoten />
führt zu dem ParseError.
Da aber msxml auf dem Anwendungsrechner installiert ist, muss es dabei ja Unterschiede geben - also msxml-Varianten mit und ohne ISO-8859-15. Die Frage ist nun, welches MSXML wohl das Richtige wäre.
Schönen Gruß
-
Hallo awalli,
In meinem vorigem Beispiel wenn ich die Zeile Set XmlDocument = CreateObject("Msxml2.DOMDocument.6.0") mit Set XmlDocument = CreateObject("Msxml2.DOMDocument.3.0") umschreibe, werden nur die Dateien test01.xml und test02.xml erstellt und bei der Zeile CreateExample "ISO-8859-15", "C:\Filme\test03.xml" kommt es zu einer Fehlermeldung.
Eine Liste der MSXML Versionen gibt es unter List of Microsoft XML Parser (MSXML) versions.
Ich habe in meinem Systems Verzeichnis geprüft und fand zwei Dateien:
%SYSDIR%\msxml6.dll (File description: MSXML 6.0 SP3)
%SYSDIR%\msxml6r.dll (Product name: Microsoft MSXML 6.0)
Ich habe auch folgende Dateien dort:
%SYSDIR%\msxml3.dll (File description: MSXML 3.0 SP11)
%SYSDIR%\msxml3r.dll (Product name: Microsoft XML Core Services)
Vielleicht kann es Dir weiterhelfen.
Grüße,
Robert
-
Haben jetzt auf UTF-8 umgestellt - damit sind bisher keine Probleme aufgetreten. (Aber das dachten wir ja anfangs bei ISO-8859-15 auch :( )
- Als Antwort markiert Robert BreitenhoferModerator Montag, 28. November 2011 12:12