dedlfix: Umlaute in String beim auslesen eines pop3 Postfaches

Beitrag lesen

echo $begrüßung;

jetzt kriege ich wenigstens mal irgend einen Wert zurück -- allerdings weiß ich ehrlich gesagt nicht genau, wie ich meine hexadez. erkannten Zeichen jetzt konvertiere.
Wandelt man den gesamten String mit bin2hex(); um und sucht hernach nach besagten hexadez.-Werten um diese z.B. durch ein ü zu ersetzen ?

Das bin2hex() war nur zu Analyse gedacht. Diese Analyse bildet nun die Grundlage für ein weiteres gezieltes Vorgehen. Ohne zu ermitteln, was da konkret vorliegt, ist das Ganze nicht viel mehr als ein Stochern im Nebel. Das bin2hex() soll dabei Hexwerte anzeigen, die im Allgemeinen durch das Ausgabemedium (Browser) nicht weiter fehlinterpretiert werden können, weil sie alls im ASCII-Bereich liegen. Wenn du den String einfach so ausgibst, dann sind da Nicht-ASCII-Zeichen dabei, die wegen falscher Interpretation ein unbrauchbares Anzeigeergebnis liefern.

Nachdem du nun konkret weißt, welche Bytewerte du vorliegen hast, kannst du sie mit den üblichen Kodiertabellen vergleichen und die Kodierung mehr oder weniger genau herausfinden. Die Zielkodierung kennst du auch, fehlt nur noch eine Konvertierung. Einfacher ist natürlich, die Kodierungsangabe der Quelle auszuwerten. (Die kann auch falsch angegeben sein, aber das ist dann ein anderes Problem.)

Die konkrete Kodierung anhand der Bytewerte herauszusuchen, kann aber nur im Zuge einer Fehlersuche ein Weg sein. Denn der Mail-Sender kann eine beliebige Kodierung für seine Mail verwenden.

Den Header habe ich mit imap_headers(); ausgelesen. Das ergibt in Falle meiner Testmail " chars ". Ich weiß nur auch hier nicht recht was ich dmit anfangen soll ...

Da fehlt was. Ein " chars " allein ist nicht so richtig sinnvoll. Du solltest eine Header-Zeile à la

Content-Type: text/plain; charset=iso-8859-1

bekommen. Davon musst du - in diesem Beispiel - den Teil iso-8859-1 extrahieren. Da kann auch was ganz anderes stehen, je nachdem, was der Absender verwendet hat. Diese Angabe musst du nun als Quellkodierung für deinen Umkodiervorgang nehmen.

echo "$verabschiedung $name";