jakkob: MSQLi Umlaute

Hallo,
ich habe heute morgen schon mal Hilfe zu dem Thema bekommen, vielleicht klpappt das ja nochmal :-)
Ich weiß, dass das Thema schon recht ausgelutscht sein muss, aber ich komme halt nicht weiter und sitze schon Stunden dran...

Nachdem ich meine Dateien nun als utf-8 speichern und anzeigen lassen kann (siehe unten), klappts leider immer noch nicht mit der Datenbank. Die DB ist auf utf-8_general_ci gestellt...

Als erstes hat auch das Senden der Umlaute nicht funktioniert, nachdem jetzt nach der Verbindungsherstellung $db->set_charset('utf8'); ausgeführt wird, kann ich Umlaute aus einem Formular in die Datenbank speichern...

set_charset soll ja nun eigentlich für Senden und Empfangen gelten. Aber das Empfangen klappt halt immer noch nicht.

Mein Broser stellt die Umlaute nur richtig dar, wenn ich den Zeichensatz nicht per set_charset ändere, er also auf Latin1 bleibt.

Die generierte HTML-Seite hat den richtigen Header (content="text/html; charset=utf-8") und die Header vom Server stimmen auch (Content-Type: text/html; charset=utf-8).
Die php-Datei ist auch in UTF-8 gespeichert...

Woran kann das noch liegen?

MfG Jakob

  1. Problem gelöst. Es war gar nicht die DB sondern die htmlentities() Fkt. die mir die Ausgabe zerschossen hat. Die hat eine zweiten Parameter für den eichensatz, der der Standardmäßig auf Latin1 (  ISO8859-1) steht...ich Dummbratze habe natürlich kein charset angegeben...

    Trotzdem vielen Dank
    live long and peacefully

    1. Moin!

      Problem gelöst. Es war gar nicht die DB sondern die htmlentities() Fkt. die mir die Ausgabe zerschossen hat. Die hat eine zweiten Parameter für den eichensatz, der der Standardmäßig auf Latin1 (  ISO8859-1) steht...ich Dummbratze habe natürlich kein charset angegeben...

      Ich würde auf htmlentities() immer verzichten, denn diese Funktion ist für den größten Teil der Zeichen, die sie in Entities wandelt, überflüssig. Schließlich nutzt du ja schon UTF-8 und kannst damit alle in HTML definierten Zeichen direkt codieren und musst nicht den Umweg über Entities machen.

      Da aber natürlich trotzdem einzelne Zeichen, die in HTML Sonderbedeutung haben, in Entities gewandelt werden müssen, gibts die Funktion htmlspecialchars().

      Die wandelt im Minimum nur <, > und & in Entities um, standardmäßig auch ", und maximal zusätzlich auch '.

      - Sven Rautenberg

      --
      "Love your nation - respect the others."
      1. echo $begrüßung;

        [...] Funktion htmlspecialchars().
        Die wandelt im Minimum nur <, > und & in Entities um, standardmäßig auch ", und maximal zusätzlich auch '.

        Ergänzung: Für die gibt es zwar auch den charset-Parameter, doch der wird für die ISO-8859-Familie und UTF-8 nicht benötigt.

        echo "$verabschiedung $name";