Autor Beitrag
Klabautermann
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Veteran
Beiträge: 6366
Erhaltene Danke: 60

Windows 7, Ubuntu
Delphi 7 Prof.
BeitragVerfasst: Do 26.04.07 12:23 
Hallo,

ich habe ein Problem, mit E-Mails, welche ich mit Indy abrufe. Diese E-Mails (Mail-Body) haben ein INI-Ähnliches Format und werden durch das abrufende Programm ausgewertet. Das funktioniert in der Regel auch recht gut, nun verschickt ein Kunde seine Mails aber mit UTF-8 Kodierten Inhalt was z.B. die Umlaute in eine für Das Auge Unschöne Version wandelt, welche so natürlich nicht übernommen werden soll.

Daher meine Frage wie erkenne ich die UTF-8 Inhalte und wie Decodiere ich sie am einfachsten?

Gruß
Klabautermann
Lossy eX
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1048
Erhaltene Danke: 4



BeitragVerfasst: Do 26.04.07 13:22 
Also erkennen kannst/musst du sie anhand des e-mail Headers. "Content-Type: text/plain;charset=iso-8859-1". Da sollte dann utf-8 drinne stehen.

Wenn ich das ganze Unicode Zeugs so richtig verstanden habe sollte man bei Dateien immer von Single Byte ausgehen außer man findet ein Steuerzeichen. 2, 3 oder 4 Bytes. Die geben dann die zukünftige Gesinnung an. Editoren wie Notepad halten sich dran. Ich weiß nicht ob in Mails auch solche Sonderzeichen stecken können.

Evtl hilft dir das faq Unicode and the Web noch etwas weiter.

Zum Dekodieren von utf-8 gibt es verschiedene Quellen. Die Bibliothek von Mike Lischke beinhält das oder zum besseren Verständniss hat mir persönlich der utf-8 Artikel auf wikipedia geholfen. Die Quellen wandeln aber utf-8 in utf-16 um. Also 2 byte pro Zeichen. Du müsstest da aber wohl hergehen und die utf-8 in Texte einer Codepage (Ansisatz) umwandeln.

_________________
Nur die Menschheit ist arrogant genug, um zu glauben sie sei die einzige intelligente Lebensform im All. Wo nicht mal das nachhaltig bewiesen wurde.
Ydobon
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 42



BeitragVerfasst: Do 26.04.07 17:53 
Das Dekodieren sollte keine Probleme bereiten:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
var utf: UTF8String; //=String
    str: AnsiString;
...
  str:=UTF8Decode(utf);

Die Delphi-Funktion UTF8Decode macht aus dem UTF-8 einen Widestring, beim Zuweisen zu einem AnsiString baut Delphi die notwendigen Aufrufe zum Umwandeln in die Codepage des Systems schon automatisch mit ein.