Alva: utf-8 unicode umlaute

Hallo,
habe eine kleine Frage und zwar:

Habe mit phpmyadmin eine Datenbank angelegt (mySQL) die als Zeichensatz UTF-8 Unicode (utf8) festgelegt sind.
wenn ich Daten per php Skript oder javascript anfange, kann ich die umlaute(äüö)nicht einlesen da ich anstatt denen, solche zeichnen bekomme(ä,ö,ü).

weiss jemand was ich machen kann um diesen Fehler zu beheben??

danke + Grus

  1. Hallo,

    weiss jemand was ich machen kann um diesen Fehler zu beheben??

    welche Kodierung benutzt denn dein Webserver?

    Grüße, Matze

    1. Hallo

      welche Kodierung benutzt denn dein Webserver?

      Wie kann ich das einsehen??

      danke + Grus

      alva

      1. Hallo,

        Wie kann ich das einsehen??

        z.B. mit einer phpinfo();
        Aber siehe dedlfix' Antwort.
        Entweder du stellst für alles die selbe Kodierung ein, oder du übergibst deine Kodierung beim MySQL-Statemante

        Grüße, Matze

        1. Habe diese Skript als test geschrieben:

          <?php

          $umlaute = "äöü";
          $blub = utf8_encode($umlaute);

          $con = mysql_connect("bsp","username","password");

          if (!$con)
            {

          die('Could not connect: ' . mysql_error());
            }

          echo "connection succesfull";

          mysql_select_db("imq", $con);

          mysql_query("INSERT INTO fragebogen (userid,fragen_id,antwort)

          VALUES ('1', '1', '$blub')");

          mysql_close($con);

          ?>

          kommt aber auch die gleiche Zeichnen im tabelle

          gruss + danke

          1. echo $begrüßung;

            $con = mysql_connect("bsp","username","password");
            if (!$con) {
              die('Could not connect: ' . mysql_error());
            }
            echo "connection succesfull";

            Nachdem du nun deine Verbindung aufgebaut hast, solltest du dich mit dem Server einigen, welche Kodierung ihr darüber sprechen wollt. Hast du PHP > 5.2.3, nimmst du mysql_set_charset(), ansonsten setzt du ein SET NAMES-Statement mittels mysql_query() ab.

            Danach kannst du Daten entsprechend dem ausgehandelten Wert kodiert übertragen.

            kommt aber auch die gleiche Zeichnen im tabelle

            Was in der Tabelle ankommt, wird gegebenenfalls umkodiert. Wenn die Kodierung der Verbindung - explizit ausgehandelt oder per Server-Default-Wert angenommen - nicht mit der Kodierung eines bestimmten Feldes übereinstimmt, dann nimmt MySQL eine Umkodierung vor. Dabei müssen natürlich alle Zeichen mit der Zielkodierung darstellbar sein, sonst gibt es Datenverlust in Form von Fragezeichen.

            echo "$verabschiedung $name";

          2. Hello Alva,

            bevor Du nun etwas mit den Codierungsfunktionen von PHP verbiegst, solltest Du Dir erstmal übersicht verschaffen über die ganze Kette:

            Welche Codierung soll gespeichert werden in der DB?
            Welche Standard-Codierung benutzt der Webserver?
            Welche Codierung benutzt Dein Editor, mit dem Du die Scripte erstellst für Datenbank und PHP (wenn Du das einetzt)?
            Welche Codierung verlangst Du von Deinem Browser entweder im meta-Tag oder im HTTP-Header?

            Wenn der Browser nicht gesagt bekommt, was er nehmen soll, wird er z.Zt. vermutlich noch ISO-8859-1 oder etwas ähnliches (je nach Sprachversion des Teils) benutzen. Das führt dann natürlich dazu, dass die eigentlich schon in UTF-8 codierten Texte im Browser wie von Dir beschrieben angezeigt werden.

            Auf dem umgekehrten Weg genauso. Der Browser wird die in Dialogelementen erfassten Texte vermutlich in ISO-8859-1 oder ähnlicher Codierung an den Server schicken.

            Und schließlich musst Du bei verwendung von UTF-8 (also einer varianten Multi-Byte-Codierung) auch die passenden Stringfunktionen verwenden, wenn die nicht von der verwendeten Scriptsprache automatisch überladen werden.

            Harzliche Grüße vom Berg
            http://bergpost.annerschbarrich.de

            Tom

            --
            Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
            Nur selber lernen macht schlau
            Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)

  2. echo $begrüßung;

    wenn ich Daten per php Skript oder javascript anfange, kann ich die umlaute(äüö)nicht einlesen da ich anstatt denen, solche zeichnen bekomme(ä,ö,ü).
    weiss jemand was ich machen kann um diesen Fehler zu beheben??

    Handle mit dem MySQL-Server auf deiner soeben aufgebauten Verbindung die Kodierung aus, mit der du deine Daten zu senden und zu empfangen gedenkst: SET NAMES ...

    echo "$verabschiedung $name";