Hallo zusammen,
ich habe eine globale Stringliste (g_sl_Dateinamen) in welcher ich in einer anderen Procedure Dateinamen von UTF-8 Dateien einlese.
Diese UTF-8 Dateien sollen als ANSÌI-Dateien gespeichert werden. Dazu nutze ich die Funktion
Utf8ToAnsi().
Nach der Ausführung von
Utf8ToAnsi() steht anstelle der Umlaute nur noch ein Fragezeichen in dem String.
Delphi-Quellcode:
...
if g_sl_Dateinamen.Count > 0 then begin
try
for j := 0 to g_sl_Dateinamen.Count - 1 do begin
sl_Output_as_ANSII_File.Clear;
sl_Input_UTF_8_File.LoadFromFile(g_sl_Dateinamen.Strings[j], TEncoding.UTF8);
for i := 0 to sl_Input_UTF_8_File.Count - 1 do begin
ShowMessage(sl_Input_UTF_8_File.Strings[i]); // hier werden die Umlaute noch korrekt angezeigt
sl_Output_as_ANSII_File.Add(Utf8ToAnsi(sl_Input_UTF_8_File.Strings[i]));
ShowMessage(sl_Output_as_ANSII_File.Strings[i]); // hier stehen nur noch Fragezeichen anstelle der Umlaute
end;
if g_sl_Dateinamen.Count > 1 then
sl_Output_as_ANSII_File.SaveToFile(IncludeTrailingBackslash(gs_ANSI_Datei_Pfad) + ChangeFileExt(gs_ANSI_Datei_Name, '') + '_' + IntToStr(j + 1) +
ExtractFileExt(gs_ANSI_Datei_Name), TEncoding.ASCII)
else sl_Output_as_ANSII_File.SaveToFile(IncludeTrailingBackslash(gs_ANSI_Datei_Pfad) + gs_ANSI_Datei_Name, TEncoding.ASCII);
end;
finally
sl_Input_UTF_8_File.Free;
g_sl_Dateinamen.Free;
sl_Output_as_ANSII_File.Free;
end;
end;
...
Ich verstehe nicht warum die Umwandlung von Umlauten hier nicht funktioniert.
Weiß hier jemand Rat und kann mir weiter helfen?
Vielen Dank schon mal vorab!