Einzelnen Beitrag anzeigen

Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
2.272 Beiträge
 
Delphi 10.4 Sydney
 
#9

AW: TXMLDocument encoding wird nicht korrekt geschrieben

  Alt 7. Sep 2018, 07:56
Da ich gerade vor genau dem selben Problem stand, hier die Lösung:
Delphi-Quellcode:
procedure TForm1.btn1Click(Sender: TObject);
var
  S, Encoding: string;
  S8: UTF8String;
  XML: IXMLDocument;
begin
  Encoding := 'UTF-8'; // ASCII, ISO-8859-1, UTF-8, UTF-16

  XML := TXMLDocument.Create(Nil);
  XML.Active := True;
  XML.Encoding := Encoding;
  if Encoding = 'UTF-16then begin
    XML.SaveToXML(S);
    Memo1.Lines.Add(S);
  end else begin
    XML.SaveToXML(S8);
    Memo1.Lines.Add(string(S8));
  end;
end;
Der Kniff ist, dass sich TXMLDocument unterschiedlich verhält, je nachdem, welchen String-Typ man an SaveToXML übergibt.

Vermutlich verhält sich das auch noch unterschiedlich, je nachdem ob man mit einem NEXTGEN-Compiler (D2009+) oder einem alten arbeitet. Hier getestet mit 10.2.3 Tokyo.
Ich mache grundsätzlich keine Screenshots. Schießen auf Bildschirme gibt nämlich hässliche Pixelfehler und schadet der Gesundheit vom Kollegen gegenüber. I und E zu vertauschen hätte den selben negativen Effekt, würde aber eher dem Betriebsklima schaden

Geändert von Codehunter ( 7. Sep 2018 um 07:59 Uhr)
  Mit Zitat antworten Zitat