echo $begrüßung;
Welche MySQL-Version wird denn auf dem Server eingesetzt?
Wenn die Fehlermeldung von "collation" spricht, kann man davon ausgehen, dass eine Version 4.1 oder größer eingesetzt wird. Den Begriff gab es bis Version 4.0 noch nicht.
Ich würde Dir empfehlen, die Datenbank intern auf UTF-8 umzustellen, da Zeichen anderer Kodierungen durch das senden an eine Latin1-Datenbank zerstört werden können.
Ergänzend möchte ich empfehlen, sich das Kapitel Character Set Support zu Gemüte zu führen und sich zu vergegenwärtigen, dass Zeichensätze für
- den Server
- jede Datenbank
- jede Tabelle
- jedes (String-)Feld
- jede Verbindung
- Kommandos
- Daten (in Richtung Server)
- Ergebnisse (Resultsets) - jeden String
jeweils einzeln eingestellt bzw. angegeben werden können.
Der von Dir erwähnte "SET NAMES"-Befehl regelt den Zeichensatz für die Übertragung zwischen Client und Server, nutzt Dir effektiv also nur etwas, wenn Deine Datenbank selber als 'UTF-8' speichert.
Jein. MySQL versucht Umwandlungen zwischen den Codierungen vorzunehmen. Dass dies nicht in jede Richtung verlustfrei möglich ist, liegt in der Natur der Sache.
Beispielsweise könnte das Charset einer Tabelle latin1 (=ISO-8859-1) sein und für Resultsets der aktuellen Verbindung UTF-8 eingestellt sein, dann bekommt man das Abfrageergebnis nach UTF-8 gewandelt ausgeliefert.
echo "$verabschiedung $name";