Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - UTF8-Konvertierung bei LoadFromFile intelligenter lösen


UliTs - Mi 25.09.19 11:16
Titel: UTF8-Konvertierung bei LoadFromFile intelligenter lösen
Hallo allerseits.

Ich lese eine CSV-Datei, die das UTF8-Format benutzt, ein und konvertiere sie anschließend nach ANSI:


Quelltext
1:
2:
CSVDatei.LoadFromFile( OpenDialogCSVDatei.FileName );
for I := 0 to CSVDatei.Count-1 do CSVDatei.Strings[I] := UTF8ToString(CSVDatei.Strings[I]);

Gibt es eine elegantere Lösung bzw. kann man dies direkt beim Aufruf von LoadFromFile machen?


Nersgatt - Mi 25.09.19 11:42

Was ist "CSVDatei"? Wenn das zum Beispiel eine TStringList ist, kannst Du das Encoding direkt bei LoadFromFile angeben.


ub60 - Mi 25.09.19 18:20

Meinst Du so etwas (wenn CSVDatei eine Listbox ist)?


Delphi-Quelltext
1:
CSVDatei.Items.Text:= UTF8ToString(CSVDatei.Items.Text);                    

ub60


Gausi - Mi 25.09.19 19:46

Ne, wohl eher so:

Delphi-Quelltext
1:
CSVDatei.LoadFromFile( OpenDialogCSVDatei.FileName, TEncoding.UTF8);                    


Das geht aber nur mit neueren Delphi-Versionen, nicht mit Delphi 6, was du im Profil angegeben hast. Ob es da noch was eleganteres gibt, weiß ich nicht. Da war das String-Handling Ansi/Unicode/UTF8 (ich vermische da jetzt die Begriffe etwas), ja auch noch ganz anders mit der "Nicht-Unicode-fähigen" VCL ... :?


UliTs - Mi 25.09.19 20:28

Vielen Dank für die schnelle Hilfe! Ich habe gar nicht damit gerechnet :-) .

Ich habe inzwischen eine aktuelle Delphi-Version: 10.3. -> Muss noch meine Signatur anpassen :-) .

Gausi, genau so etwas habe ich gesucht, aber übersehen.

P.S.
Ja, war eine StringList.