Sebastian Schrader: Ausgabeprobleme bei UTF-8 in Verbindung mit MySQL

Beitrag lesen

Hallo Leute,

ich habe folgendes Problem im Zusammenhang mit UTF-8:
Ich lese mit meinem PHP-Skript Strings aus meiner MySQL-Datenbank aus (Die Datenbank ist überall auf UTF-8 eingestellt, d. h. von globalen Variablen wie "character set client" bis in zu den Einstellungen für jede Spalte). Mein Editor (Zend Studio Client) speichert die Skripte, Templates, etc auch alle als UTF-8. Apache gibt UTF-8 aus, php ebenso, im Header wird UTF-8 angegeben und als meta-Tag zusätzlich auch noch einmal.
Dennoch werden die Sonderzeichen wie Umlaute aus der Datenbank nicht als UTF-8 dargestellt, stattdessen sieht man Fragezeichen, statische Strings mit Umlauten (die zum Beispiel in einem Template stehen oder per echo/print ausgegeben werden) aber schon. Zum Test habe ich die Strings aus der Datenbank die Umlaute enthalten per mb_detect_encoding() auf ihre Zeichsatz getestet: das Ergebnis war UTF-8. Danach habe ich die Strings zum Teste per mb_convert_encoding() obwohl sie eigentlich schon UTF-8 sein müssten nochmal zu UTF-8 konvertieren lassen und dann geht alles. Um zu Testen obs an MySQL liegt habe ich mit dem MySQL Query Browser und phpMyAdmin mir die Datenbank angeschaut und hier werden die Umlaute korrekt ausgegeben.

Weiß vielleicht jemand den Grund für dieses Verhalten?

PS: Über Alternativlösungen wie zum Beispiel alle Strings vorher zu konvertieren bin ich mir klaren, ich stelle diese Frage um dem Problem auf den Grund zu gehen, sonst hätte ich anstatt UTF-8 auch bei HTML-Entities bleiben können und mir die Umkonfiguration auf UTF-8 sparen können.

mfG
Sebsatian Schrader