Polnishe Sonderzeichen, UTF-8

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

  • 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 |


    Kommentar


    • #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.

      Kommentar


      • #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
        Zuletzt geändert von Abraxax; 14.07.2009, 12: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 |


        Kommentar


        • #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">

          Kommentar


          • #6
            Zitat von onemorenerd Beitrag anzeigen
            Und damit gehts weg:
            <form method="post" accept-charset="UTF-8">
            Getestet?

            Kommentar


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

              Kommentar


              • #8
                Zitat von pekka Beitrag anzeigen
                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.
                Zuletzt geändert von onemorenerd; 14.07.2009, 13:33.

                Kommentar


                • #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 !
                  Zuletzt geändert von Daether; 14.07.2009, 14:26.

                  Kommentar

                  Lädt...
                  X