Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#8

AW: UTF-8 Datei einlesen, umwandeln in ANSI...statt Umlaute sind Fragezeichen vorhand

  Alt 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)
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu ( 5. Mär 2014 um 13:24 Uhr)
  Mit Zitat antworten Zitat