echo $begrüßung;
Version: MySQL 5.0
Das ist an deinem Problem unbeteiligt. Möglicherweise hast du aber auch da vergessen, eine Kodierung explizit auszuhandeln. Aber der Reihe nach.
Wenn ich nun unter Firefox kyrillische Zeichen in das Formular eingebe und absende, werden die Zeichen folgendermaßen in die Tabelle eingefügt: Парт
Wenn ich nun allerdings im InternetExplorer den gleichen Vorgang wiederhole, schreibt er in die Tabelle so etwas: Ëþäìèëà
Du hast, so wie es aussieht, dem Browser keine Angaben zur Kodierung der Webseite gemacht oder das accept-charset-Attribut des Formulars weggelassen oder beides. Der Browser sendet dir nun die Daten, wie er es für richtig hält.
Woran kann das liegen und wie kann ich das beheben?
Sendet der Webserver einen Content-Type-Header mit charset-Angabe? Das kannst dü beispielsweise mit der livehttpheader-Extension für den Firefox prüfen. Diese Angabe hat Vorrang vor einer gleichlautenden Angabe in einem Meta-Element des HTML-Dokuments. Normalerweise nehmen die Browser dann auch diese Angabe, um die Formulardaten zu kodieren, aber das accept-charset-Attribut des form-Elements zu setzen ist ja kein Aufwand.
Die Texte werden in einer MySql Datenbank mit Kollation utf8_unicode_ci gespeichert.
Damit das auch wirklich passiert, sollte der Client mit dem MySQL-Server die auf seiner Verbindung verwendete Kodierung aushandeln, ansonsten nimmt MySQL an, dass die Daten gemäß einer Default-Konfigurierung ankommen. Wenn diese nicht der Feld-Kodierung (jedes Feld muss einzeln betrachtet werden. Eine Tabellen- und Datenbank-Konfiguration ist unerheblich) entspricht kodiert MySQL die Daten um. Es muss aber korrekt kodierte Daten haben, sonst kann es nicht richtig sortieren und andere String-Funktionen richtig anwenden.
Zum Aushandeln der Kodierung gibt es das SET NAMES-Statement oder korrekterweise die Funktion mysql_set_character_set() der Client-API, für die es hoffentlich in deinem Programmiersystem eine Entsprechung gibt.
echo "$verabschiedung $name";