dedlfix: Sonderzeichen umwandeln in Datenbank und wieder auslesen

Beitrag lesen

echo $begrüßung;

Hatte hier im Forum gelesen das es zwischen 'latin1_general_ci' und UTF-8 keine Komplikationen geben soll, auch als ich die Datenbank auf UTF-8 umgestellt hatte bekam ich immer das gleiche falsche Ergebnis.

Wenn du die Kodierung eines Felds änderst, dann kodiert MySQL den Inhalt um. Wenn in einem als Latin1 deklariertem Feld zwei Bytes stehen, die als UTF-8 interpretiert eine gültige Sequenz darstellen bzw. ein Zeichen, in Latin1 aber als zwei Zeichen angesehen werden, und du die Kodierung von Latin1 auf UTF-8 änderst, dann werden die zwei Zeichen jedes für sich zu zwei UTF-8-Sequenzen umkodiert. Das ergibt dann 4 Bytes, bleiben aber zwei Zeichen, diesmal jedoch UTF-8-kodiert. Umgekehrt ist das natürlich genauso.
Nachvollziehen kann man das mit der Funktion LENGTH(), die immer die Länge in Bytes liefert. (Die Länge in Zeichen bekommt man mit CHAR_LENGTH().)

echo "$verabschiedung $name";