Polnishe Sonderzeichen, UTF-8

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Polnishe Sonderzeichen, UTF-8

    Moin Moin,
    ich habe z.Zt. folgendes Problem:

    Ich habe ein Formular, welches ein input/text-Feld enthält. Dieses soll beim Abschicken ausgegeben werden und in eine Datei geschrieben werden.
    PHP Code:
            print( htmlentities ($_POST["mail"] ,ENT_COMPAT "UTF-8" ) )  ;
            print( 
    html_entity_decode ($_POST["mail"] ,ENT_COMPAT "UTF-8" ) )  ;
            print( 
    htmlspecialchars ($_POST["mail"] ,ENT_COMPAT "UTF-8" ) )  ;
            print( 
    htmlspecialchars_decode ($_POST["mail"] ) ) ;
            print( 
    utf8_encode ($_POST["mail"] ) )  ;
            print( 
    utf8_decode ($_POST["mail"] ) )  ;
            
            
    $handle fopen("testify.txt" "w+" ) ;
            
    fwrite $handle $_POST["mail"] ) ; 
    Es handelt sich hierbei speziell um polnische Sonderzeichen, ich teste immer mit folgendem Wort :
    Łączymy

    Das Problem ist, dass die polnischen Sonderzeichen immer ersetzt werden durch Fragezeichen, sowohl beim schreiben als auch bei jedem Print.
    Der Charset der Formularseite ist im übrigen auf UTF-8 gestellt.

    Hat jemand eine Idee was ich falsch mache ?

    MfG Daether

  • #2
    *crossposting*
    debianforum.de • Thema anzeigen - Polnische Sonderzeichen ( UTF-8 )

    @Daether
    Bleibe bitte bei einem Thead!

    *close*
    INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


    Comment


    • #3
      Ist denn auch die Seite, auf der Du die print()s machst, ausdrücklich UTF-8 kodiert?
      Stehen auf der Formularseite gesendeter Content-Type-Header und Kodierungsangabe beide auf UTF-8? Ersteres kannst Du mit der Web Developer Extension von Firefox rausfinden: Information > View Response Headers.

      Comment


      • #4
        So .. Ich habe ein kleines Testscript geschrieben und das Problem nachvollzogen und ebenfalls keine Lösung auf dem klassischen Weg finden können.

        Zur Info .. Ich habe die Tabelle leicht modifiziert.

        Hier das Testscript:
        PHP Code:
        <?php

        /*
        CREATE TABLE IF NOT EXISTS `newsletter_pl_adressen` (
          `ID` int(11) NOT NULL auto_increment,
          `mail` varchar(60) NOT NULL,
          `aktiv` tinyint(1) NOT NULL,
          `vorname` varchar(30) NOT NULL,
          `nachname` varchar(30) NOT NULL,
          PRIMARY KEY  (`ID`)
        ) ENGINE=InnoDB  DEFAULT CHARSET=utf8;
        */

        // Error Reporting aktivieren
        error_reporting(E_ALL);

        // passenden UTF8 header senden
        header('content-type: text/html; charset=utf-8');

        // Alle Daten sollen immer als UTF8 verarbeitet werden.
        iconv_set_encoding('input_encoding''utf-8');
        iconv_set_encoding('output_encoding''utf-8');
        iconv_set_encoding('internal_encoding''utf-8');

        // Verbindung aufbauen
        $db = new mysqli ('hostname''user''pass');

        // Verbindung auf UTF8 setzen.
        $db->query('SET NAMES "utf8"');
        $db->query('SET CHARACTER SET "utf8"');

        // Datenbank wählen
        $db->select_db('database');

        // Parameter übernehmen, wenn vorhanden ...
        $mail = isset($_POST['mail']) ? $_POST['mail'] : 'n/a';

        // Datensatz schreiben
        $db->query('INSERT INTO newsletter_pl_adressen ( mail , aktiv ) VALUES ("'.$db->real_escape_string($mail).'" , 0 ) ');

        // evtl. Fehler ausgeben ...
        if ( $db->errno )
        {
            die(
        'Error #'.$db->errno.': '.$db->error);
        }

        ?>
        <form action="<? echo $_SERVER['PHP_SELF']; ?>" method="post">
            <input type="text" name="mail" value="" />
            <input type="submit" />
        </form>
        Den Thread habe ich wieder geöffnet ...

        EDIT:
        Zugangsdaten entfernt
        Last edited by Abraxax; 14-07-2009, 11:07.
        INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


        Comment


        • #5
          Das hat doch überhaupt nichts mit der DB zu tun, wie auch schon im Debianforum festgestellt wurde. Es liegt am Formular!

          Und damit gehts weg:
          <form method="post" accept-charset="UTF-8">

          Comment


          • #6
            Originally posted by onemorenerd View Post
            Und damit gehts weg:
            <form method="post" accept-charset="UTF-8">
            Getestet?

            Comment


            • #7
              Hatte ich in meinen Skript versucht, leider ohne Erfolg.

              Comment


              • #8
                Originally posted by pekka View Post
                Getestet?
                Jap. Willst du auch mal?
                PHP Code:
                <?php header('Content-Type: text/html; charset=utf-8'); ?>
                <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
                    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
                <html>
                <head><title></title></head>
                <body>
                <form method="post" accept-charset="UTF-8">
                    <input type="text" name="mail" value="" />
                    <input type="submit" />
                </form>
                <?php print isset($_POST['mail']) ? $_POST['mail'] : ''?>
                </body>
                </html>
                Eigentlich sollte der Content-Type-Header bzw. ein entsprechendes Meta-Tag schon genügen. Aber manche Browser sind dümmer als andere und deshalb ist es sinnvoll, dem Formular das accept-charset mitzugeben.
                Statt UTF-8 tuts für polnisch übrigens auch ISO-8859-2.
                Last edited by onemorenerd; 14-07-2009, 12:33.

                Comment


                • #9
                  Stimmt, die kurze Version funktioniert bei mir auch !

                  Vielen Dank erstmal dafür !


                  Ich werde jetzt mal Stück für Stück meine Sachen hinzufügen und schauen ob ich die Stelle finde, wo an der das Problem auftaucht. Melde mich wenn ich die Stelle finde !

                  //EDIT :
                  Hab die Datenbank nochmal abegrissen und neu gemacht. Jetzt gehts.
                  Nochmal HERZLICHEN DANK !
                  Last edited by Daether; 14-07-2009, 13:26.

                  Comment

                  Working...
                  X