Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi XML-Datei Encoding (https://www.delphipraxis.net/157555-xml-datei-encoding.html)

Jack and the Juice 16. Jan 2011 13:55

Datenbank: XML • Version: k.A. • Zugriff über: ClientDataSet

XML-Datei Encoding
 
Hallo,

ich habe eine kleines Problem mit einer XML-Datei.

Zur Laufzeit wird überprüft, ob die XML-Datei besteht und falls nicht wird sie erstellt.

Delphi-Quellcode:
ClientDataSet1.FileName := ExtractFilePath(ParamStr(0))+'daten.xml';
  if FileExists(ClientDataSet1.FileName) then
      ClientDataSet1.Open
  else begin
    with ClientDataSet1.FieldDefs do begin
      Clear;
      Add('feld', ftString, 40);
    end;
    ClientDataSet1.CreateDataSet;
  end;
Problematisch sind nun jedoch Umlaute oder 'ß', denn das verarbeitet die XML-Datei nicht (ich tippe mal aufgrund von UTF-8). Ich bräuchte die XML-Datei also in ISO 8859-1 Kodierung.

Genau da ist mein Problem. Wie gehe ich hier am Besten vor?

Grüße und so,
Jackandthejuice

marabu 16. Jan 2011 20:06

AW: XML-Datei Encoding
 
Hallo,

vor den ersten Gehversuchen mit einer neuen Komponente mache ich mich mit ausnahmslos all ihren Eigenschaften und Methoden vertraut. Das Kapitel zur Methode SaveToFile() erklärt mir, dass die Komponente (bei meiner Version) drei Encodings beherrscht. Außerdem erfahre ich dort, dass nur diese Methode mir ein Abweichen vom Standard-Encoding erlaubt.

Du solltest Dir ein minimales Projekt erstellen und mit den unterschiedlichen Einstellungen experimentieren. Wenn Du nicht weiterkommst, dann stellst Du dein Projekt samt Testdaten hier bereit und jemand wird sich um dein Problem kümmern.

Grüße vom marabu

rollstuhlfahrer 16. Jan 2011 20:46

AW: XML-Datei Encoding
 
Ich habe bei einem ähnlichen Problem pragmatisch gehandelt. Du kannst deine Strings ganz einfach in ASCII-Zahlen zerlegen und die dann hexadezimal speichern. Das kann jede Kodierung. Leider wirst du bei dieser Methode zwangsweise Probleme mit Unicode bekommen.

Bernhard

Jack and the Juice 18. Jan 2011 16:07

AW: XML-Datei Encoding
 
Hallo,

zunächst vielen Dank für die Antworten. Vielleicht nochmal um das im Voraus zu klären. Wenn ich wie Marabu schrieb mit
Delphi-Quellcode:
ClientDataSet.SaveToFile(filename,dfXMLUTF8);
sichere, können dann Umlaute in der XML gespeichert und auch fehlerlos im ClientDataSet ausgelesen werden? Ich bin leider nicht wirklich versiert in Kodierungen.

Gruß,
Jackandthejuice

marabu 18. Jan 2011 16:47

AW: XML-Datei Encoding
 
Probiere es doch einfach aus. Überprüfen kannst Du das Ergebnis ganz einfach mit NotePad oder einem anderen Unicode-fähigen Editor. Zum Testen kannst Du ja dein existierendes Projekt verwenden.

himitsu 18. Jan 2011 18:52

AW: XML-Datei Encoding
 
Zitat:

Zitat von marabu (Beitrag 1075592)
Zum Testen kannst Du ja dein existierendes Projekt verwenden.

Das ist nicht so einfach, da in XML die Kodierung nicht über ein BOM, sondern über das Encoding-Attribut des ersten XML-Prozessor-Tags geregelt wird.

Normale Texteditoeren reagieren aber nur auf das BOM.
OK, das neue Notepad in Win7 scheint auch das XML-Encoding-Tag zu beachten. (falls ich mich richtig erinnere)


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:46 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