TStringList unterschiede zwischen WinXP und Win8.1
-
Hi,
habe mal wieder ne Frage,
Wenn ich eine ANSI codierte Datei über Windows 8.1 in die TStringList einlade wird eine Exception ausgelöst weil er in der Funktion eine UTF8 Codierte Datei erwartet, was ja auch ganz toll ist.Das Problem habe ich wenn ich das selbe über Windows XP veranstalte dann löst er keine Exception aus und ladet die Datei in falscher Codierung ein.
Wie kann ich das Problem so beheben ?try { Data->LoadFromFile(szFilename, TEncoding::UTF8); } catch(EEncodingError &EenCod) { ShowMessage(EenCod.Message); }
-
Dann mußt du wohl (unter WinXP) vorher selber überprüfen, ob in der Datei der UTF-8 BOM vorhanden ist, z.B. mittels WideStrUtils.HasUTF8BOM.
-
aber das geht nicht, weil es diese Dateien zum Großteil ohne diesen BOM gibt
-
Und woher soll das Programm dann wissen, ob das UTF-8 oder ANSI ist?
Ich tippe darauf, daß Windows XP nur ANSI verarbeitet (außer es gab noch irgendwelche Updates diesbzgl., die ich nicht kenne), d.h. du mußt dann bei einer UTF-8 Datei vorher selber diese nach ANSI umwandeln...
-
die Dateien die ich verarbeite in meinem Programm sind UTF8 oder ANSI codiert,diese beiden muss ich voneinander unterscheiden können. Und es sieht nach einem Riesenproblem für mich aus.
-
Th69 schrieb:
Und woher soll das Programm dann wissen, ob das UTF-8 oder ANSI ist?
Ich tippe darauf, daß Windows XP nur ANSI verarbeitet (außer es gab noch irgendwelche Updates diesbzgl., die ich nicht kenne), d.h. du mußt dann bei einer UTF-8 Datei vorher selber diese nach ANSI umwandeln...
kennst Du den Editor Notepad++, der läuft auf XP und zeigt mir immer von jeder Datei die Richtige Codierung an, ich frage mich wie das Möglich ist.
-
Th69 schrieb:
d.h. du mußt dann bei einer UTF-8 Datei vorher selber diese nach ANSI umwandeln...
ok ich muss also irgendwie nach ANSI umwandeln ?
-
Ja, s. z.B. Utf8ToAnsi oder Converting UTF8 to ANSI (ISO-8859-1) in Delphi (die Suche nach Delphi liefert für die VCL meist bessere Ergebnisse, als direkt nach BCB/Rad Studio C++ suchen).
PS: The Notepad encoding detection issues keep coming up sowie UTF-8 automatic detection
-
Von utf8 nach Ansi umwandeln is nicht sol toll
denn solche Zeichen hier "ΔΛΠγ" werden dann zu "?".Es ist besser herauszubekommen welche Codierung die Datei hat und sie dann mit der richtigen Codierung einzuladen, bzw. von vornherein bei Nicht-ANSI-Dateien die ANSI Codierung auszuschließen.