echo $begrüßung;
Diese werden in der MYSQL-Datenbank richtig dargestellt und auch die Ausgabe funktioniert einwandfrei.
Worauf beruht deine Annahme, in der Black-Box namens "MySQL" sei etwas richtig dargestellt? Um an den Inhalt heranzukommen musst du ihn ausgeben, und dabei nimmt MySQL gegebenenfalls Umkodierungen vor, wenn die Kodierung der Felder nicht mit der Kodierung der Verbindung übereinstimmt.
Welche Kodierung ist überhaupt für die beteiligten Felder eingestellt?
Alles wird richtig dargestellt. Der Administrator soll aber bestimmte Inhalte verändern können, also lese ich die Daten aus, gebe sie in ein Formular, dort kann er sie verändern und wieder zurück an die Datenbank schicken. Leider klappt der Weg zurück NICHT !
Untersuche, welche Bytes du verarbeitest. Was bekommst du vom Browser? Was bekommst du vom DBMS? Sichbar machen kannst du die Bytes mit bin2hex() oder auch url_encode().
Die Daten sind UTF-8, die Seite (sagt FF) ist UTF-8 und die MYSQL-Datenbank ist UTF-8 ...
$update = MYSQL_QUERY("SET NAMES 'utf8'");
$update = MYSQL_QUERY("SET CHARACTER SET 'utf8'");
Wenn dich das Ergebnis einer Funktion nicht interessiert, brauchst du es auch nicht einer Variablen zuzuweisen. Siehe außerdem: </archiv/2007/7/t157019/#m1022293>.
Wenn du schon das Funktionsergebnis in $update ablegst, kannst du es auch gleich mal zur Kontrolle mit var_dump() ausgeben lassen. Vielleicht signalisiert dir MySQL ja auch einen Fehler.
Doch am Ende stehen in der Datenbank wieder Fragezeichen.
Siehe oben. Woraus genau schlussfolgerst du, dass sie drin stehen und nicht nur bei der Ausgabe entstanden sind?
echo "$verabschiedung $name";