Sven Rautenberg: ... und da war es wieder, das Problem mit den Zeichensätzen ;(

Beitrag lesen

Moin!

Ich denke, dein elementarer Fehler liegt hier:

Die Zeichensatzunterstützung von MySQL raff ich nicht richtig und verwende sie auch nicht.

Aber vermutlich läuft bei deinem Live-System noch einiges mehr unabsichtlich schief, weil du dich bisher nicht um die korrekte Auszeichnung des Encodings bemüht hast.

Grundsätzlich wichtig ist: Das ausgelieferte HTML muß korrekt als UTF-8 gekennzeichnet sein, sowohl im HTTP-Header als auch im HTML-Head per Meta-Tag.

Das führt dann dazu, dass auch eingesetzte Formulare wieder UTF-8 zurück an den Server schicken. Dieser muß seinerseits natürlich UTF-8 auch korrekt behandeln können (die normalen Stringfunktionen von PHP können das beispielsweise nicht, bzw. man muß bedenken, dass man dort die für UTF-8 typischen, abweichenden Ergebnisse erhält). Das gilt insbesondere für die Datenverbindung zur Datenbank, die ebenfalls auf UTF-8 eingestellt werden muß. Und zu guter letzt benötigen natürlich auch die DB-Datenfelder die korrekte Auszeichnung mit UTF-8, wobei die Kollation auch noch dafür sorgt, wie das Sortierverhalten ist.

Wenn du diese drei Punkte beachtest, solltest du keinerlei Probleme mit dem Encoding haben. Wenn du sie ignorierst, hast du nur durch Zufall keine Probleme (wie auf deinem Entwicklungssystem zu sehen), zu unpassenden Ereignissen dann aber doch wieder (wie auf dem Livesystem).

- Sven Rautenberg

--
"Love your nation - respect the others."