Entwickler-Ecke
Internet / Netzwerk - Indy & UTF-8
Klabautermann - Do 26.04.07 12:23
Titel: Indy & UTF-8
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 - 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 [
http://www.unicode.org/faq/utf_bom.html#25]. 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 [
http://www.unicode.org/faq/unicode_web.html] 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 [
http://de.wikipedia.org/wiki/UTF-8] 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.
Ydobon - Do 26.04.07 17:53
Das Dekodieren sollte keine Probleme bereiten:
Delphi-Quelltext
1: 2: 3: 4:
| var utf: UTF8String; 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.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!