Mailinglisten-Archive |
Hallo Thomas, Am Montag, 21. August 2006 17:13 schrieb Thomas Winter: > ich decodieren mit mb_decode_mimeheader einen String mit Umlauten. > > mb_decode_mimeheader(strtoupper($val->subject)) Punkt 1: Wenn, dann solltest Du hier mb_strtoupper() verwenden! :-) > Es klappt leider nicht, es wird nur Unsinn angezeigt (Apache UTF-8). > Ich meine ich hätte es mit PHP4 schon einmal genau so gemacht, nur > habe ich jetzt PHP5. > > So sieht der Originalstring aus: Test =?iso-8859-15?b?5Pb8xNbc?= Test Es scheinen hier zwei Probleme vorzuliegen. 1. Es sieht nach einem Zeichensatzproblem aus: Apache UTF-8 und Text ISO-8859-15. Deine Testzeichenkette ist in Ordnung. Bei mir ergeben folgende Zeilen header('Content-Type: text/html; charset=ISO-8859-15'); mb_internal_encoding('ISO-8859-15'); echo(mb_decode_mimeheader('=?iso-8859-15?b?5Pb8xNbc?=')); dieses Ergebnis: äöüÄÖÜ 2. Es steht zwar im Handbuch, "Using quoted-printable-encoding the hex-numbers must be written in uppercase letters!", das trifft jedoch hier nicht zu. Erweitert man den Code unter 1. wie folgt um mb_strtoupper(), header('Content-Type: text/html; charset=ISO-8859-15'); mb_internal_encoding('ISO-8859-15'); echo(mb_decode_mimeheader(mb_strtoupper('=?iso-8859-15?b?5Pb8xNbc?='))); dann kommt folgendes heraus: äð|\ÐB Die Ausgabe unter 1. scheint mir die gewünschte zu sein. Daher mein Tip: 1. Den Zeichensatz für die Seite explizit mitzugeben. 2. Den Zeichensatz für die mb-Operationen explizit setzen. 3. Sollten die Zeichensätze unter 1. und 2. unterschiedlich sein, mb_convert_encoding zur Umwandlung der Zeichenkette verwenden. 4. (mb_)strtoupper weglassen. Viele Grüße Lutz
php::bar PHP Wiki - Listenarchive