echo $begrüßung;
An welche anderen stellen denkst du?
Wenn ich mysql Zeichensatz nach jeder Verbindung festlege was soll dann noch sein?
Es gibt, wie schon erwähnt, viele Stellen, an denen die Zeichenkodierung eingestellt werden kann. MySQL versucht bei unterschiedlichen Kodierungen in die jeweils andere umzukodieren. Beispielsweise ist ein Feld einer Tabelle auf Kodierung A eingestellt, und auf der Client-Verbindung wird Kodierung B verwendet. MySQL versucht nun, beim Speichern von Kodierung B nach Kodierung A umzuwandeln. Beim Auslesen entsprechend von Kodierung A nach B. Dabei kann es zu Datenverlust kommen, da nicht alle Zeichen in der jeweils anderen Kodierung darstellbar sein können. Die Felder eine Tabelle können auch unterschiedlich eingestellt sein. Ein Feld latin1, das andere utf8, ein drittes ucs, etc... Kommt nun auf der Verbindung ein ordentlich utf-8-kodiertes €, wird das im latin1-Feld nur ein ? erzeugen und in den anderen beiden Feldern richtig gespeichert werden.
Das mit dem php-interpreter verstehe ich nicht. Ich muss ihm doch sagen, dass die Skripte in utf-8 kosiert sind, oder?
Nein, das muss er nicht wissen, und das kann man ihm auch nirgends einstellen (ich wüsste nicht wo). Es müssen nur die Syntax-Regeln erfüllt sein. PHP verwendet für alle Syntax-Elemente und Bezeichner mitgelieferter Funktionen, Konstanten und Variablen nur Zeichen, die unter UTF-8, ASCII und ISO 8859-x die gleichen Bytewerte haben. Benutzerdefinierte Bezeichner dürfen auch aus Bytes oberhalb von 7E bestehen. Ob ein ä mit einem Byte (E4) oder mit zwei Bytes (C3 A4) kodiert ist, ist dem PHP egal. Nur muss das dann für den selben Bezeichner konsequent in allen für den Request benötigten Dateien gleich kodiert sein. Einmal so und einmal anders kodiert sind zwei verschiedene Bezeichner.
Und wenn ich dann ausgaben mit php mache müsste ich die auch irgendwie utf-8 kodieren, oder? wenn ja wie
Du musst die Ausgaben so kodieren, wie du das dem Ausgabemedium gegenüber angegeben hast, bzw. so wie es dies fordert.
echo "$verabschiedung $name";