Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   XML (https://www.delphipraxis.net/46-xml/)
-   -   Delphi MSXML und fehlende Angabe eines Zeichensatzes in XML-Datei (https://www.delphipraxis.net/78605-msxml-und-fehlende-angabe-eines-zeichensatzes-xml-datei.html)

Daniel 7. Okt 2006 18:24


MSXML und fehlende Angabe eines Zeichensatzes in XML-Datei
 
Mo-hoin :hi:,

ich habe folgendes Problem mit einer XML-Datei, die ich auszulesen habe. Die Daten in den Knoten enthalten teilweise Umlaute (siehe Beispiel, Zeile 4 "Funktionalitäten"), in der gesamten Datei ist jedoch kein Encoding oder irgendwas in der Art gesetzt. Lasse ich nun MSXML an diese Datei ran, bekomme ich einen ganz ekligen Fehler.

Anbei mal die ersten Zeilen meiner XML-Datei ... also meine ist es leider nicht und an das Programm, das diese Dateien generiert, komme ich leider auch nicht ran, um dies zu ändern. Es ist also leider mein Problem, mit diesen Dateien fertig zu werden.

XML-Code:
<mouse-capturer-project>
   <general>
      <project-name>lalala</project-name>
      <project-decription>Testen einiger Funktionalitäten von www.lalala.de</project-decription>
      <test-object>www.lalala.de</test-object>
      <date>03.01.2005</date>
      <time>15:05:46</time>
      <created-by>Mouse Capturer</created-by>
   </general>
... und so weiter ...
Kann ich dem MSXML-Parser so ohne Weiteres ein Encoding vorgeben? Es würde langen, wenn er Umlaute klaglos verarbeiten würde.

Wie mach' ich'n das?

mirage228 7. Okt 2006 18:31

Re: MSXML und fehlende Angabe eines Zeichensatzes in XML-Dat
 
Hi,

Wenn ich die Datei mittels Notepad als "Unicode" abspeichere, dann gehts :)
Edit: Also ich meine, dass Du dafür vielleicht ein Programm schreiben könntest, was diese Umwandlung vornimmt...

mfG
mirage228

marabu 7. Okt 2006 19:16

Re: MSXML und fehlende Angabe eines Zeichensatzes in XML-Dat
 
Hallo Daniel,

MSXML kommt mit auto sensing für UTF-8 und UTF-16 - alles andere muss per encoding Anweisung in der XML declaration gesteuert werden. Wie du da am besten vorgehst hängt von der Größe der XML-Dokumente ab. Es läuft alles darauf hinaus, dass du entweder das Dokument in der richtigen Kodierung anliefern musst (GNU recode) oder die encoding Anweisung nachtragen musst (das könnte kurz vor loadXML stattfinden).

Grüße vom marabu

xaromz 7. Okt 2006 19:22

Re: MSXML und fehlende Angabe eines Zeichensatzes in XML-Dat
 
Hallo,
Zitat:

Zitat von Daniel
...in der gesamten Datei ist jedoch kein Encoding oder irgendwas in der Art gesetzt. Lasse ich nun MSXML an diese Datei ran, bekomme ich einen ganz ekligen Fehler.

XML-Dateien sind implizit UTF8-kodiert, soweit nichts anderes festgelegt ist.
Zitat:

Zitat von Daniel
Kann ich dem MSXML-Parser so ohne Weiteres ein Encoding vorgeben? Es würde langen, wenn er Umlaute klaglos verarbeiten würde.

Wie mach' ich'n das?

Du könntest die Datei einlesen und als WideString and den Parser übergeben (Methode Load).

Gruß
xaromz


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:09 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz