echo $begrüßung;
Das funktionierte bisher auch recht gut. Es gab keine Probleme mit Umlauten undanderen Schriftarten. Es wird alles korrekt gespeichert und auch wieder korrekt ausgegeben.
Sicher? Auch der phpMyAdmin zeigt alles richtig an?
Jedoch gibt es Probleme wenn z.B. das Zeichen: Ō auftaucht.
Dieses Zeichen wird als ? in der mysql DB gespeichert.
Damit hast du ein Zeichen, das außerhalb von ISO-8859-1/Windows-1252/Latin1 liegt. Wenn aus einem Zeichen ein ? wird, findet unter Garantie eine Umkodierung statt, bei der dieses Zeichen in der Zielkodierung nicht dargestellt werden kann, beispielsweise von UTF-8 nach ISO-8859-1.
Und bei einem anschließenden Select-Befehl bekomme ich die Warnung:
Warning: mysql_fetch_object(): supplied argument is not a valid
Diesen Fehler bekommst du nicht beim Select sondern beim nachfolgenden Fetch. Du hast ignoriert, dass mysql_query() über seinen Rückgabewert einen Fehlerzustand bekanntgab, statt einer fetchbaren Ressourcenkennung. Werte stets die Rückgabeergebnisse aus, bevor du damit weiterarbeitest. Den eigentlichen Fehler bekommst du, wenn der Rückgabewert false ist, über mysql_error().
Weiß jemand woran das liegt, dass das Ō als ? gespeichert wird
Es sind mindestens zwei Dinge zu beachten, wenn man mit Daten umgeht.
- Das verarbeitende System muss mit den Daten umgehen können.
- Die Kommunikation zweier Geräte muss aufeinander abgestimmt sein.
Es ist im Prinzip nicht (zweifelsfrei) möglich, auf Empfängerseite zu erraten, welche Kodierung der Sender verwendet hat.
Im Falle MySQL müssen für 1) die Felder (jedes einzeln!) der Tabelle mit einer passenden Kodierung konfiguriert sein (Kodierung und Kollation - wobei die Kollation nicht für das Speichern wichtig ist, aber immer zusammen mit der Kodierung gesetzt wird).
Für 2) muss man MySQL nach jedem Verbindungsaufbau mitteilen, welche Kodierung man zu verwenden gedenkt. Dafür gibt es die PHP-Funktion mysql_set_charset() oder als Alternative ein SET NAMES-Statement.
und bei einem SELECT Befehl dann gar nichts mehr geht?
Das verrät dir die Auswertung des eigentlichen Fehlers.
echo "$verabschiedung $name";