dedlfix: UTF-8 plötzlich nur mehr ???

Beitrag lesen

echo $begrüßung;

» Auf welche Weise setzt du die Kodierung der Datenbankverbindung?
Ich mache es mit SET NAMES und SET CHARACTER SET. Benutzt wird wie gesagt PHP 5.2.8, vielleicht hat das damit Probleme?

SET NAMES und SET CHARACTER SET schließen sich gegenseitig aus, weil sie beide die selben Konfigurationsparameter setzen, nur unterschiedlich. SET CHARACTER SET will man in der Regel nur dann haben, wenn man sich seiner Auswirkungen bewusst ist und diese so haben will. Verwende lieber SET NAMES und nichts weiter! Oder noch besser die Funktion mysql(i)_set_charset().

» Wenn du Daten aus dem Formular entgegennimmst, hast du dich vergewissert, dass sie korrekt UTF-8-kodiert sind? Wenn ja und du diese dann in ein Tabellenfeld schreibst, kann sie dann der PMA richtig anzeigen? Wenn nein, wie sieht das aus, was er zeigt?

Das ist eine gute Frage, wie genau finde ich heraus ob die Daten korrekt kodiert sind?

Lass sie dir in Hex-Form ausgeben (bin2hex()) und vergleiche mit dem Sollzustand für die kritischen Zeichen. Tabellen dafür gibt es über eine Suchmaschine zu finden.

Ich weiß nicht ob es hilft, aber wenn ich ein Posting mit Sonderzeichen in der Vorschau anzeigen lasse, wird alles korrekt dargestellt.

Unter der Annahme, dass die Seite richtig kodiert und deklariert ist, wäre das richtig.

» Was spuckt MySQL auf die Aufforderung  SHOW VARIABLES LIKE 'char%'  aus?
character_set_database latin1

Das sieht zusammen mit dem SET CHARACTER SET sehr nach dem Übeltäter aus. Wenn die charset-Einstellung deiner Datenbank auch noch auf latin1 steht (beispielsweise weil sie den obigen Default-Wert geerbt hat), musst du dich nicht wundern, wenn es dir deine Nicht-Latin1-Zeichen kaputtmacht.

echo "$verabschiedung $name";