dedlfix: Umlaute in Datenbank schreiben

Beitrag lesen

echo $begrüßung;

Aus der Art der "Nicht-Richtigkeit" kann ein geübtes Auge oft erkennen, was konkret schiefläuft. Bitte beobachte und beschreibe genauer, wenn man dir gezielter helfen soll.
Also, der Umlaut ö wird z.B als ö dargestellt...

Das ist ein UTF-8-ö, das als ISO-8859-1/Latin1 interpretiert wurde.

Was bedeutet "manuell"?
Mit manueller Eingabe meine ich, dass ich die Datenbank mit einer Verwaltungsoerfläche von 1und1 bearbeite. Also nicht mit PHP hineinschreiben lasse, sondern alle Daten selbst reinstelle

Diese Verwaltungsoberfläche dürfte ein phpMyAdmin sein. Der hat seine Hausaufgaben gemacht und weiß, wie er korrekt mit dem DBMS zu sprechen hat.

in meinem <head> habe ich folgenden Eintrag stehen:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

Das verwendet ein Browser als Ersatz, wenn er keine charset-Angabe im gleichnamigen HTTP-Header findet. Ob dein Webserver da was mitsendet kannst du beispielsweise mit der Firefox-Extension livehttpheaders prüfen.

mein Browser kann normalerweise Umlaute anzeigen...

Um das Anzeigen geht es nicht direkt. Der Browser muss den ankommenden Bytestrom richtig interpretieren, damit er die richtigen Zeichen anzeigen kann.

und meine MYSQL Datenbank hab ich auf den Standardeinstellungen gelassen, die ist automatisch uft-8

Auch das DBMS muss die ankommenden Daten richtig interpretieren. Dazu ist es notwendig, dass es über die Kodierung informiert wurde. Das Speichern der Daten ist eine Sache. Das Empfangen und Versenden von und an Clients eine andere. Sind beide Angaben (Feld- und Verbindungskodierung) unterschiedlich kodiert MySQL selbständig hin und her. 1und1 wird die Verbindungskodierung sicher nicht per Default auf UTF-8 gesetzt haben, weil damit viel mehr Kunden Probleme haben dürften, die ihre Daten in ISO-8859-1/Latin1 übertragen. UTF-8-kodierte Daten können hingegen problemlos über eine ISO-8859-1/Latin1-Verbindung gesendet werden, nur beim Interpretieren auf Empfängerseite kommt Murks raus.

Woran kann das sonst noch liegen?

Wie ich schon empfahl: Verlass dich nicht auf Defaultwerte, handle explizit eine Kodierung auf der Verbindung zwischen PHP und MySQL aus (mysql(i)_set_charset() oder SET NAMES).

echo "$verabschiedung $name";