Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Software-Projekte der Mitglieder (https://www.delphipraxis.net/26-software-projekte-der-mitglieder/)
-   -   MS XML 6.0 speichern von Umlauten bzw. Sonderzeichen (https://www.delphipraxis.net/144728-ms-xml-6-0-speichern-von-umlauten-bzw-sonderzeichen.html)

handson 15. Dez 2009 10:25


MS XML 6.0 speichern von Umlauten bzw. Sonderzeichen
 
Hallo!

Ich benutze die Funktionen aus der MSXML6.DLL. Das funktioniert auch alles ganz, bis auf die deutschen Umlaute bzw. Sonderzeichen.
Beispiel-Code:

Delphi-Quellcode:
Procedure TFormMain.AddPickTicketTextXML(PickTicketText : TImportPickTicketText; LfdNr : Integer;
                                         LK : String; Blank : Boolean = False);
Var
  sub : IXMLDOMNode;

Begin
  PickticketHdrInstruction := xmlDoc.createElement('PickticketHdrInstruction');
  PickticketInstrFields := xmlDoc.createElement('PickticketInstrFields');
 
  :
  :
  sub := xmlDoc.createElement('SpclInstrDesc');
  sub.text := PickTicketText.Text;
  PickticketInstrFields.appendChild(sub);
  :
  :

  PickticketHdrInstruction.appendChild(PickticketInstrFields);
  ListOfHdrInstructions.appendChild(PickticketHdrInstruction);
End;
In der XML-Datei sieht das dann so aus:

Zitat:

<PickticketInstrFields>
:
:
<SpclInstrDesc>Bitte denken Sie bitte zuk#194;nftig
daran</SpclInstrDesc>
:
:
</PickticketInstrFields>
(zwischen zuk und #194 kommt natürlich noch ein kaufmännisches "und", der zeigt das ursprünglich hier nicht an...)

Hier sieht man, dass aus dem ü von zukünftig eine Escape Sequenz gemacht hat. Der IE zeigt da nur ein Kästchen an.
Benutze ich unter Delphi die Funktion UTF8Encode, dann wandelt er aus allen UTF-8 Zeichen auch Escape Sequenzen. Das geht
gar nicht .

Wie kann ich denn die Umwandlung in diese Sequenzen ausschalten, so dass er den reinen UTF-8 Code schreibt und der IE
das auch richtig anzeigt?

Gruß,
Stephan

iKilledKenny 15. Dez 2009 10:54

Re: MS XML 6.0 speichern von Umlauten bzw. Sonderzeichen
 
XML-Code:
<?xml version='1.0' encoding='ISO-8859-1' ?>
<root>
    Ein Text mit Umlauten (ü ö ä Ü Ö Ä)
</root>

handson 15. Dez 2009 11:17

Re: MS XML 6.0 speichern von Umlauten bzw. Sonderzeichen
 
Nein, das nützt mir auch nichts. Zum einen muss es UTF-8 bleiben, zum weiteren soll MSXML die Einträge schreiben und
da schreibt er immer noch die Escape Sequenzen rein. Der Kopf ist nachher für das Auslesen wichtig, aber hier ist das eigentliche
Erstellen nicht in Ordnung.

himitsu 15. Dez 2009 11:27

Re: MS XML 6.0 speichern von Umlauten bzw. Sonderzeichen
 
Das mit dem Kästchen könnte schon richtig so sein,
denn die #194 ist im Unicode auch kein ü ... das ü müßte eine #252 sein.


Hast du auch wirklich UTF8 als Encoding angegeben?

handson 15. Dez 2009 11:32

Re: MS XML 6.0 speichern von Umlauten bzw. Sonderzeichen
 
Das war jetzt ein Beispiel ohne UTF8Encode. Würde ich den Text mit UTF8Encode bearbeiten, sieht die Ausgabe so aus:

Zitat:

:
:
<SpclInstrDesc>Bitte denken Sie bitte
zuk#195;#8218;#194;nftig daran</SpclInstrDesc>
:
:
(Habe da auch mal wieder das kaufmännische "und" rausgenommen, sonst sieht man das nicht...)

handson 15. Dez 2009 11:35

Re: MS XML 6.0 speichern von Umlauten bzw. Sonderzeichen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Als Beispiel habe ich mal einen Screenshot vom IE gemacht, wie das dann mit UTF8Encode aussieht...

Muetze1 15. Dez 2009 12:32

Re: MS XML 6.0 speichern von Umlauten bzw. Sonderzeichen
 
Kasper Mütze in XML, oder: Eine Etüde über das Ü

handson 15. Dez 2009 12:46

Re: MS XML 6.0 speichern von Umlauten bzw. Sonderzeichen
 
So, habe das Problem gelöst. Es lag an ein ganz anderen Stelle, die eigentlich nichts mit dem XML zu tun hat.
Allerdings hat mir der Artikel vom MSDN noch ein paar Hinweise gegeben, wie es eigentlich auszusehen hat.

Trotzdem allen Beteiligten vielen Dank für die schnelle Hilfe!

Stephan


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

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