kostenloser Webspace werbefrei: lima-city


komische UTF-8 codierung

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    gamefun

    gamefun hat kostenlosen Webspace.

    Hallo

    ich versuche gerade einen kleines Script zum Checken auf neue Emails im einem Postfach
    und lese die Liste vorhandener Nachrichten mit imap_fetch_overview() aus, was auch klappt

    bei den meisten eMail Subjects (Betreff) mit Umlate ä ö ü werden diese auch normal ausgegeben
    (mit charset=iso-8859-1)

    aber bei manchen Mails kommt der Betreff gaaaaanz komisch an, z.B:

    =?UTF-8?Q?Test2_mit_zwei_Anh=C3=A4nge?=

    heiist im Kalrtext: "Test2 mit zwei Anhänge"

    also auch ohne die Unterstriche zwischen den Worten !!!

    in einem WebMail (RoundCube) steht dieser Betreff aber richtig im Klartext
    also muss es ja gehen, diese codierung umzuwandeln ... aber wie ?!?

    ... ok, da steht was von UTF-8, also habe ich Ausgabe mit charset=utf-8 versucht
    aber Ergebnis bleibt genau das gleiche, keine Änderung in diesem Betreff
    aber die anderen Umlaute, die vorher gingen kommen dann als ? an

    könnt Ihr mir verraten, wie ich soooo komisch codierten String in Klartext bekomme?

    oder wie man gleich "sauber" codiert von imap abholenkann ?


  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Hallo gamefun,

    was Du da hast nennt sich Q-Encoding und ist Bestandteil der MIME Spezifkation.
    Wenn Du auf einen Betreff triffst, der mit '=?' anfängt und mit '?=' aufhört, dann solltest Du das mit
    mb_decode_mimeheader()
    umwandeln können. Allerdings steht in den Kommentaren, dass die Funktion wohl manchmal nicht so gut funktioniert und man alternativ auch
    iconv_mime_decode()
    verwenden kann.
  4. Autor dieses Themas

    gamefun

    gamefun hat kostenlosen Webspace.

    darkpandemic schrieb:
    was Du da hast nennt sich Q-Encoding und ist Bestandteil der MIME Spezifkation


    vielen Dank, das hilft mir weiter :)

    habs jetzt so

    erstmal vorher: ... sicherstellen, das String in UTF-8 vorliegt
    header("Content-Type: text/html; charset=utf-8");
    
    $betreffx = (string)$minfo->subject; 
    if (!mb_detect_encoding($betreffx, 'UTF-8', true)) { 
    $betreffx = iconv('iso-8859-1', 'UTF-8', $betreffx);
    }

    damit alle Umlaute richtig dargestellt werden
    ... ohne das wird sonst String der nicht in utf-8 ankommt falsch dargestellt
    die meisten kommen als ISO (bzw. ASCII) an, auch mit Umlauten (im Klartext)
    je nach Absender kommen manche auch mit "normal" UTF-8 an
    aber einige halt auch mit diesem "Q-Encoding" ... abhängig von Mail-Sender

    und ich will jetzt Ausgabe als UTF-8

    .. hier meine Tests / Ergebnisse

    ----------------------------------
    (a) ohne
    $betreff = $betreffx; 
    echo "<br />".$betreff."\n";

    Ausgabe $betreff: (Q-Encoding)
    =?UTF-8?Q?Test2_mit_zwei_Anh=C3=A4nge?=


    ----------------------------------
    (b) mb_decode_mimeheader
    mb_internal_encoding('UTF-8'); 
    $betreff = mb_decode_mimeheader($betreffx);
    echo "<br />".$betreff."\n";

    Ausgabe $betreff: (die Unterstriche bleiben)
    Test2_mit_zwei_Anhänge


    ----------------------------------
    (c) iconv_mime_decode
    $betreff = iconv_mime_decode($betreffx, 0, 'UTF-8');
    echo "<br />".$betreff."\n";

    Ausgabe $betreff: (sieht gut aus)
    Test2 mit zwei Anhänge


    ----------------------------------
    (d) imap_mime_header_decode
    $betr_nfo = imap_mime_header_decode($betreffx);
    $betreff = $betr_nfo[0]->text;

    Ausgabe $betreff: (sieht auch gut aus)
    Test2 mit zwei Anhänge


    ----------------------------------


    also (c) geht wohl für alle header, und (d) ist halt speziell für imap_header

    zusammen mit dem Sicherstellen, das String in UTF-8 vorliegt
    klappt Variante (c) und (d) für mich .... bisher bei den ersten Tests

    +++++ DANKE @darkpandemic !!! +++++
    Dein Hinweis hat mir sehr geholfen :)
  5. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!