Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Leidige Sonderzeichen in eml

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Erledigt] Leidige Sonderzeichen in eml

    Nachdem ich den Inhalt mit allen encodes und decodes known to PHP durchgetestet habe und die vermurksten UTT-8 Sonderzeichen nicht loswerde...

    Laut Sypheed Mail utf-8
    PHP in utf-8 gespeichert
    HTML charset=utf-8

    € wird so angezeigt =E2=82=AC

    PHP-Code:
    $mails file_get_contents("13/1.eml");
    $chars json_decode('{"Ä" : "=C3=84", "Ö" : "=C3=96","Ü" : "=C3=9C","ß" : "=C3=9F","ä" : "=C3=A4","ö" : "=C3=B6","ü" : "=C3=BC","EUR" : "=E2=82=AC"}');
     foreach (
    $chars as $key => $value)
    {   
        
        
    $mails preg_replace($value $key$mails);   
    }
    /* Fehlerausgabe:

    Warning:  preg_replace() [function.preg-replace]: Unknown modifier '8' in C:\AppServ\www\01sprd\mails.php on line 16

    Warning:  preg_replace() [function.preg-replace]: Unknown modifier '9' in C:\AppServ\www\01sprd\mails.php on line 16

    Warning:  preg_replace() [function.preg-replace]: Unknown modifier '9' in C:\AppServ\www\01sprd\mails.php on line 16

    Warning:  preg_replace() [function.preg-replace]: Unknown modifier '9' in C:\AppServ\www\01sprd\mails.php on line 16

    Warning:  preg_replace() [function.preg-replace]: Unknown modifier '4' in C:\AppServ\www\01sprd\mails.php on line 16

    Warning:  preg_replace() [function.preg-replace]: Unknown modifier 'B' in C:\AppServ\www\01sprd\mails.php on line 16

    Warning:  preg_replace() [function.preg-replace]: Unknown modifier 'B' in C:\AppServ\www\01sprd\mails.php on line 16

    Warning:  preg_replace() [function.preg-replace]: Unknown modifier '8' in C:\AppServ\www\01sprd\mails.php on line 16

    string(0) ""

    */ 
    Wie bringe ich preg_replace bei, dass die $value jeweils ein String ohne Modifier ist?
    ______
    Templaterie Blog


  • #2
    Nutze konsequent UTF-8. Kurze Checkliste für UTF-8 und Umlautprobleme:
    - HTTP Header Content-Type mit UTF-8
    - in HTML-Seiten <meta http-equiv="content-type" content="text/html; charset=utf-8" />
    oder <meta charset="utf-8"><!-- HTML5 -->
    sollte idealerweise als Erstes, gleich nach dem einleitenden head-Element erfolgen
    - PHP und HTML/Template Dateien im Editor als "UTF-8 ohne BOM" speichern
    - Formulardaten in UTF-8 übergeben (ggf. mit accept-charset="utf-8" sicherstellen)
    - Datenbank Zeichensatz UTF-8, Tabellenkollationen utf8_general_ci o.Ä.
    - Datenbankverbindung von PHP zu MySQL auf UTF-8 stellen
    - Daten aus Fremdquellen müssen in UTF-8 überführt werden, wenn sie nicht als UTF-8 vorliegen
    utf8_encode: ISO-8859-1-Zeichenkette -> UTF-8
    - htmlentities codierung mitgeben, Beispiel: htmlentities($info,ENT_NOQUOTES,'UTF-8');
    - für deutsche Monatsnamen wie März ist u.U. setlocale(LC_TIME, "de_DE.utf8") notwendig
    Zitat von nikosch
    Macht doch alle was Ihr wollt mit Eurem Billigscheiß. Von mir aus sollen alle Eure Server abrauchen.

    Kommentar


    • #3
      € wird so angezeigt =E2=82=AC

      PHP-Code:
      $mails file_get_contents("13/1.eml");
      $chars json_decode('{"Ä" : "=C3=84", "Ö" : "=C3=96","Ü" : "=C3=9C","ß" : "=C3=9F","ä" : "=C3=A4","ö" : "=C3=B6","ü" : "=C3=BC","EUR" : "=E2=82=AC"}');
       foreach (
      $chars as $key => $value)
      {   
          
          
      $mails preg_replace(/$value/ , $key$mails);   

      Und hab's.

      =E2=82=AC wird zu EUR
      ______
      Templaterie Blog

      Kommentar


      • #4
        Was solln das werden? Wenn du Mails verschicken willst nimm ne Mailer-Klasse, die regelt alles für dich.
        Zitat von nikosch
        Macht doch alle was Ihr wollt mit Eurem Billigscheiß. Von mir aus sollen alle Eure Server abrauchen.

        Kommentar


        • #5
          Bin jetzt zu faul, das BOM in PSPAD herauszufinden.

          Zitat von tkausl Beitrag anzeigen
          - PHP und HTML/Template Dateien im Editor als "UTF-8 ohne BOM" speichern
          Das kann ich nicht mit Sicherheit sagen, aber sonst CHECK.
          Ich war den utf-8 kram als erstes erfolglos durch. Dann folgte dumpfes try&error mit allen encodes und decodes, die ich finden konnte.

          Und schließlich die Kapitulation mit preg_replace
          ______
          Templaterie Blog

          Kommentar


          • #6
            Zitat von tkausl Beitrag anzeigen
            Was solln das werden? Wenn du Mails verschicken willst nimm ne Mailer-Klasse, die regelt alles für dich.
            Ich will nix verschicken. Ich will den Inhalt eines Mailordners mit einer Tabelle abgleichen und Bestellnummern zuordnen und am Ende die Mehrwertsteuer-Beträge ermitteln.
            ______
            Templaterie Blog

            Kommentar


            • #7
              Das ist http://en.wikipedia.org/wiki/Quoted-printable , kein Zeichensatzproblem. Allenfalls ein Multibyteproblem vor dem QP-Encoding.


              quoted_printable_decode

              It's as simple as that. Ergo: Lern' Deinen Scheiß, wenn Du schon mit Daten auf diesem Level arbeitest.
              --

              „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
              Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


              --

              Kommentar


              • #8
                Wozu der krampf ?

                PHP-Code:
                $string "Hallo ich bin quoted-printable string mit sonderzeichen: =C3=84 =C3=96 =C3=9C, =C3=84=C3=96=C3=9C";

                echo 
                quoted_printable_decode($string); 
                Code:
                Hallo ich bin quoted-printable string mit sonderzeichen: Ä Ö Ü, ÄÖÜ
                QPs decodieren kann PHP schon seit PHP 4.
                PHP.de Gitter.im Chat - Meine öffentlichen Bookmarks ← Ich habe dir geholfen ? Beschenk mich.

                Kommentar


                • #9
                  Danke. Wobei dafür, dass das hier der Einsteiger-Bereich ist, ist der Ton ein wenig rauh.
                  ______
                  Templaterie Blog

                  Kommentar

                  Lädt...
                  X