Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
Delphi 12 Athens
|
AW: UTF-8 Datei einlesen, umwandeln in ANSI...statt Umlaute sind Fragezeichen vorhand
5. Mär 2014, 13:21
Delphi-Quellcode:
// läd die Datei mit dem Encoding, welches erkannt wird (über ein eventuell vorhandenes BOM)
// und wandelt dann alles in Unicode um (String/UnicodeString) und das wird eventuell auch noch falsch codiert, falls es UTF-8 ohne BOM war
slFile.LoadFromFile(dlgOpen1.Filename);
for i := 0 to slFile.Count - 1 do begin
// Strings[i] gibt eine String/UnicodeString zurück
// Utf8ToAnsi will aber einen UTF8String = automatische Umwandlung, welches auch schief gehen kann und es wird plötzlich zum ANSI
// - welche aber der Compiler bemängeln sollte, für die, welche das CompilerLog lesen
// Utf8ToAnsi macht dann aus dem ANSI/UTF8 ein ANSI
// Strings[i] will wieder seinen String/UnicodeString, also wird aus dem ANSI wider Unicode
// - welche aber der Compiler bemängeln sollte, für die, welche das CompilerLog lesen
slFile.Strings[i] := Utf8ToAnsi(slFile.Strings[i]);
end;
// speichert es dann als ANSI, also wieder Unicode zu ANSI, da kein Encoding angegeben wurde.
slFile.SaveToFile(dlgOpen1.Filename);
Delphi-Quellcode:
slFile.LoadFromFile(dlgOpen1.Filename, TEncoding.UTF8); // wenn BOM in der Datei vorhanden, dann ist das nicht nötig
slFile.SaveToFile(dlgOpen1.Filename, TEncoding.Default); // Default ist Standard und könnte weggelassen werden (entspricht auch dem TEncoding.ANSI)
$2B or not $2B
Geändert von himitsu ( 5. Mär 2014 um 13:24 Uhr)
|
|
Zitat
|