AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

UTF-8 in Datei schreiben

Ein Thema von H.Bothur · begonnen am 18. Nov 2019 · letzter Beitrag vom 20. Nov 2019
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von Moombas
Moombas

Registriert seit: 22. Mär 2017
Ort: bei Flensburg
525 Beiträge
 
FreePascal / Lazarus
 
#11

AW: UTF-8 in Datei schreiben

  Alt 19. Nov 2019, 08:28
Prüfe mal vorher ob die Datei auch als UTF8 eingestellt ist. Ich habe da sProblem auch mal gehabt, da war die Ausgabe zwar richtig, dadurch das die Datei selber aber Unicode und nicht UTF8 war, hat er es entsprechend falsch umgesetzt.
Einmal die Datei neu als UTF8 gespeichert und nochmal getestet - Einwandfrei.

Vielleicht ist es bei dir ja ähnlich.
Der Weg ist das Ziel aber man sollte auf dem Weg niemals das Ziel aus den Augen verlieren.
  Mit Zitat antworten Zitat
H.Bothur

Registriert seit: 25. Jun 2012
Ort: Seevetal & Lagos
257 Beiträge
 
Delphi 11 Alexandria
 
#12

AW: UTF-8 in Datei schreiben

  Alt 20. Nov 2019, 10:19
Eine moderne Alternative ist aber auch nicht viel schwerer in der Umsetzung, gibt es für die Streams auch diverse Klassen, die einem die Arbeit erleichtern. Besonders einfach finde ich den Streamwriter. Eine etwas neuere Log-Variante sieht etwa so aus:

Delphi-Quellcode:
begin
  logFile:=TStreamWriter.Create(filename,true,TEncoding.UTF8);
  try
    logFile.WriteLine(prefix+' ['+DateTimeToStr(now)+'] '+logMessage);
  finally
    logFile.Free;
  end;
end;
Hier wird der Zeichensatz einfach beim Erstellen des Objekts angegeben und gut ist.
Sorry wenn ich da noch einmal so blöde nachfrage ... dann kann ich also Write komplett durch diese Variante ersetzen und bin damit wieder einigermaßen "State of the Art" ?

Gruß
Hans
Hans-Georg Bothur
www.hermann-juergensen.de
  Mit Zitat antworten Zitat
DieDolly

Registriert seit: 22. Jun 2018
2.175 Beiträge
 
#13

AW: UTF-8 in Datei schreiben

  Alt 20. Nov 2019, 10:25
Du kannst auch einfach die Funktionen TFile.WriteAllLines() und TFile.WriteAllText() aus System.IOUtils nutzen.
Damit spart man sich viele Zeilen.
  Mit Zitat antworten Zitat
Bbommel

Registriert seit: 27. Jun 2007
Ort: Köln
659 Beiträge
 
Delphi 12 Athens
 
#14

AW: UTF-8 in Datei schreiben

  Alt 20. Nov 2019, 13:51
Sorry wenn ich da noch einmal so blöde nachfrage ... dann kann ich also Write komplett durch diese Variante ersetzen und bin damit wieder einigermaßen "State of the Art" ?
Korrekt. Ich finde den TStreamWriter eine wunderbar einfach zu benutzende Klasse, wenn es darum geht, zeilenweise etwas in eine Datei zu schreiben oder an eine existierende Datei dranzuhängen. Also das, was man früher klassisch mit einem "writeln(fileHandle,...)" gemacht hat.

Andere Varianten wurden ja hier schon genannt: eine TStringList eignet sich dann als angenehme Art, mittels StringList.SaveToFile, wenn es darum geht, eine ganze Datei in einem Rutsch zu schreiben, die du vorher im Speicher zusammensetzt. Und dann gibt es ja noch die von DieDolly gerade genannte Methode mit TFIle... Und wenn dir langweilig ist, kannst du natürlich auch "von Hand" in den TFileStream schreiben - aber da finde ich die obigen Methoden die angenehmere Variante.
  Mit Zitat antworten Zitat
H.Bothur

Registriert seit: 25. Jun 2012
Ort: Seevetal & Lagos
257 Beiträge
 
Delphi 11 Alexandria
 
#15

AW: UTF-8 in Datei schreiben

  Alt 20. Nov 2019, 17:01
Da es ja keinen Danke-Button gibt ... Danke !!

Hans
Hans-Georg Bothur
www.hermann-juergensen.de
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:28 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