Hallo,
zur Erklärung meines Programms:
Mein Programm läd von einer Internetseite eine Datei herunter (unbekannter Zeichensatz). Nun läd mein Programm diese Datei in den Arbeitsspeicher.
(Problem besteht sowohl beim Laden der Datei über eine Stringlist (Stringlist.LoadFromFile) als auch über AssignFile -> Reset -> Readln)
Ich benutze als Speichermedium im Speicher eine Variable vom Typ String (müsste in XE7 also UnicodeString sein). Das Problem ist, dass mein Programm aus
"Éibhear Dunn" -> "Éibhear Dunn" macht. Also anscheinend ein Problem mit der Kodierung hat. Ich habe die Datei einfach mal in Notepad++ geöffnet und bekomme dort angezeigt, dass sie UTF8 kodiert ist. Ändere ich die Kodierung in notepad++ auf
ANSI wird der genannte Text ebenso falsch dargestellt.
Ich selbst habe leider garkeine Ahnung von Kodierungen, bin also relativ überfragt, wie ich nun handeln muss. Ich habe schon versucht mit der Funktion UTF8Encode und anderen Funktionen, die ich so bei meiner Suche entdeckt habe zu arbeiten. Leider immer mit dem selben Ergebnis.
Was eventuell noch erwähnenswert wäre:
Der Zweck meines Programms ist es im Grunde, einen Text, den der Benutzer in ein Edit einträgt mit dem in der Datei zu vergleichen. Dazu habe ich einen kleinen Test durchgeführt:
Delphi-Quellcode:
var
s: String;
fs: String;
begin
s := 'Éibhear Dunn';
ShowMessage(s); {funktioniert: Ausgabe: Éibhear Dunn}
ShowMessage(ed_test.Text); {funktioniert: Ausgabe: Éibhear Dunn -> manuelle Eingabe im Edit}
//gekürzt
fs := ReadLn(f,s);
ShowMessage(s); {falsche Ausgabe, wie oben beschrieben}
end;
Ich hoffe ihr könnt mir helfen
EDIT:
Habe auch noch einige Tests durchgeführt. Ich habe einfach ein Memo die Datei laden lassen, über memo.lines.LoadFromFile. Auch hier zeigt er (wie zu erwarten) das falsche an. Kopiere ich den Text allerdings aus Notepad++ (Strg+C) und füge ihn im normalen Windows Editor ein (Strg+V) und speichere diese Datei, so ist die neue Datei lesbar. Allerdings zeigt mir Notepad beim öffnen auch an, dass die neue Datei nun
ANSI kodiert ist.
Ich schließe deshalb daraus, dass Delphi nicht mit UTF8 Dateien umgehen kann.