echo $begrüßung;
dass mit den unterscheidlichen Versionen ist natürlich saublöd,
Ich hatte mir nur die phpinfo() gecheckt ;(
Die sagt zur MySQL-Server-Version nichts aus. Wie soll sie auch, ohne zu wissen, welcher Server gefragt werden soll. Die von phpinfo() angezeigt Versionsnummer ist die der Client-API. Die kann mit der Version des Servers übereinstimmen, wenn z.B. beides aus den gleichen Quellen kompiliert wurde.
Das System ist '2.7.0-pl2'
Das ist auch keine MySQL-Server-Version, sondern die vom phpMyAdmin.
und das Problem ist, dass ich das Kuddelmuddel mit den Ziechensätzen immernoch nicht wiklich verstanden habe.
Jetzt steht in meiner DB (jedenfalls laut PHPMyAdmin) ein "Ä", dass ich da mit deinem SELECT hinaushole, mit einem "htmlspecialchars" umwandle, um es auf einer Seite, die mit "<meta ...; charset=UTF-8" />" darzustellen. Dargestellt wird aber ein "?"
Wenn der PMA etwas richtig anzeigt, deutet das nur darauf hin, dass die Daten im Feld ordnungsgemäß eingetragen sind. Wenn beim Abfragen Mist entsteht, ist meist eine für die Verbindung falsche eingestellte Kodierung schuld.
htmlspecialchars() hat keinen Einfluss auf die Umlaute.
Da MySQL kleiner als 4.1 die Daten (hierzulande) Latin1-kodiert ausliefert, kann man diese nicht einfach so in ein UTF-8-Dokument einfügen. Das ist eine ungültige Byte-Folge, die mit einem Ersatzzeichen angezeigt wird. Der ursprüngliche Byte-Wert geht beim Weiterverarbeiten verloren.
Ich hab überhaupt keine Ahnung, was ich tun kann.
Möglichkeit 1: Lege UTF-8-kodierte Daten in der Datenbank ab. Sende UTF-8-kodierte Daten zur DB und du bekommst sie so wieder zurück. Das reicht aus, wenn man seitens des DBMS nicht weiter mit den Daten arbeiten will. Unter Umständen kann man sogar suchen. Jedenfalls muss man sich dabei imKlaren sein, dass MySQL von 1 Byte = 1 Zeichen ausgeht, was bei UTF-8 ja nicht der Fall ist. Es ist auch nicht mehr richtig möglich, mit dem PMA zu arbeiten, da dieser nun die Nicht-ASCII-Zeichen nicht richtig darstellen kann.
Möglichkeit 2: Wandle deine Daten vor dem Eintragen in die Datenbank nach Latin1[*] um, und nach dem Abfragen nach UTF-8. Dabei kann es zu Zeichenverlust kommen, wenn Nicht-Win-1252-Zeichen von der Anwendung kommen. Beachte, dass die Konvertierungsfunktion Win-1252 verwendet, sonst hast du schon beim €-Zeichen Probleme.
Möglichkeit 3: Erkunde, ob nicht doch irgendwie ein MySQL Version 4.1 oder größer zur Verfügung steht.
[*] MySQL versteht darunter Win-1252, nicht das eigentliche, weniger Zeichen enthaltende ISO-8859-1. Zu den Unterschieden siehe: http://de.wikipedia.org/wiki/ISO-8859-1.
echo "$verabschiedung $name";