echo $begrüßung;
Vor einigen Tagen hab ich die Webseiten (und DBs) auf einen neuen Server gebracht.
Das heisst, ich hab auch gleich den Apache, PHP und MySQL aktualisiert, hab aber die Webseiten und die DBs schlicht auf den neuen Server kopiert.Genauere Angaben, über dein Vorgehen als du den MySQL-Server mit den alten Daten versorgt hast, wären schon hilfreich, denn daraus kann man eventuell erkennen, was du richtig oder falsch gemacht hast.
Ich hab den neuesten XAMP installiert. Hab die httpd angepasst. Ich hab die Dateien (Webseiten) in das htdocs kopiert. Ich hab die Datenbanken und Tabellen als Dateien ins MySQL-Data-Verzeichnis des neuen Servers kopiert.
Wenn du vorher eine Version kleiner als 4.1 hattest, dann ist beim Übernehmen der Datenbank-Dateien zu beachten, dass die Default-Einstellung des neuen MySQL-Servers zunächst einmal wieder genauso eingestellt werden muss wie beim alten. Hierzulande wird das latin1 gewesen sein. Nun muss man mindestens einmal für jedes Feld die Kodierung/Kollation ändern. Dabei ist es fast egal, wohin man umstellt, Hauptsache die neue Kodierung kann alle verwendeten Zeichen aufnehmen. Es reicht, wenn man innerhalb der Kodierung bleibt und nur die Kollation eine andere ist. Man kann es auch gleich wieder zurückstellen. Die Änderung führt dazu, dass diese Information in die Tabellendateien eingetragen wird. Bis einschließlich Version 4.0 stand sie nicht drin, da es nur eine generelle Kodierung für den gesamten MySQL-Server gab. Hat man das für die Felder getan, kann man das auch noch für die Tabellen und Datenbanken machen. Danach kann man auch problemlos die Defaulteinstellung des Servers ändern.
In der My.cnf steht
character-set-server = latin1
Es ist empfehlenswert, die eben beschriebene Vorgehensweise anzuwenden, auch wenn man derzeit noch nicht daran denkt, die Server-Default-Kodierung zu wechseln. Später hat man es garantiert vergessen :-)
Was zeigt der PMA auf seiner Startseite an, welche Kodierung er verwendet? Was ist im Server eingestellt (Was zeigt die Seite System-Variablen für die "character set ..."-Werte an?)
In der My.cnf steht
character-set-server = latin1
collation-server = latin1_general_ci
Die Tabellen stehen alle auf latin1_general_ci.
Du hast den ersten Teil der Frage nicht beantwortet. Davon ausgehend, dass der PMA UTF-8 verwendet, kann ich mir schon vorstellen, dass er Grund für eine Konvertierung hat. Bisher hatte er immer Recht und der Fehler lag woanders.
Lasse ich mir den Inhalt der Tabelle anzeigen, werden in den BLOB-Feldern die deutschen Umlaute nicht korrekt dargestellt.
Die deutschen Umlaute werden mit Sonderzeichen dargestellt (das 'ü' ist beispielsweise eine kleine schwarze Raute mit einem Fragezeichen drin)
BLOB-Felder werden als Binärdaten behandelt. Wenn du darin Text stehen hast, solltest du einen der TEXT-Feldtypen verwenden.
"Kleine schwarze Raute mit einem Fragezeichen" bedeutet, dass die Bytefolge in der gewählten Kodierung fehlerhaft ist. Beispielsweise ist das Byte für ein ISO-8859-1 kodiertes ü in einer UTF-8-Zeichenfolge ungültig, wenn es sich zwischen "normalen" Buchstaben befindet.
Vielleicht hast du auch nur nicht beachtet, die auf deinen Datenbankverbindungen zu verwendende Kodierung explizit auszuhandeln (SET NAMES ... oder besser mit der Funktion mysql_set_charachter_set() bzw. deren Pendant in der verwendeten Umgebung (beispielsweise mysqli in PHP5)).
Die meisten meiner Tabellenabfragen funktionieren wunderbar und anstandslos. Lediglich der Phpmyadmin bei der 'LIKE'-Suche und meine Php-Scripte bei der Suche innerhalb von BLOB-Feldern.
Es ist trotzdem keine schlechte Idee, die zu verwendende Kodierung explizit auszuhandeln, anstatt sich auf den Zufall zu verlassen.
echo "$verabschiedung $name";