[phpMyAdmin] Problem mit Kollation
-
Hallo!
Habe schon lange nicht mehr viel mit PHP und MySQL gemacht. Ich studiere es zwar durch Tutorials und Dokus aber beim folgenden Problem brauch ich Eure Hilfe:
Also, ich habe eine Tabelle in MySQL mit phpMyAdmin erstellt, und für eine Spalte (wo ich Text speichere) die Kollation (also die Kodierung) auf utf8_general_ci eingestellt. Als Test habe ich einen Datensatz eingefügt und für die Textspalte einen UTF-8 kodierten Text eingegeben (da sind deutsche Umlaute enthalten). Wenn mein PHP-Script diesen Text von der Datenbank ausliest und ihn ausgibt, dann erhalte ich eigenartigerweise keinen UTF-8 kodierten Text. PHP scheint den Text in eine andere Kodierung zu konvertieren.
Folgende Punkte sind wahrscheinlich interessant für euch:
.) Benutze phpMyAdmin 2.6.1-pl3, PHP 5.0.4 und MySQL 4.1.11
.) Die Kodierung der HTML-Seite ist UTF-8.
-
Ich sollte noch hinzufügen, dass der Text scheinbar korrekt in der Datenbank gespeichert wird. Es muss also höchstwahrscheinlich ein "Problem" mit PHP geben.
-
Gute Nachricht: ich hab eine Antwort auf das Problem gefunden. Und zwar liegt es daran, dass man dem MySQL-Server vorher bescheid sagen muss wenn man die Daten in einer anderen Kodierung als standardmäßig definiert erhalten will. Diese Anweisung muss bei jedem neuen Verbindungsaufbau wiederholt werden. Hierzu folgender Link: http://mysqld.active-venture.com/Charset-connection.html
-
Um nicht Verwirrung zu stiften wollte ich noch erwähnen, dass mein Verständnis von Kollationen inkorrekt war. Eine Kollation beschreibt nämlich Regeln die von Programmen in Sortierungsalgorithmen auf Texte angewandt werden. Durch diese Regeln weiß z.B. ein Programm ob der Buchstabe 'ö' größer ist als 'o', oder ob 'ß' größer ist als 's' etc. Man sollte also die Kollationen seiner Tabellen mit Bedacht auf die Sprache des Inhalts einstellen, so dass MySQL die Datensätze bei entsprechenden Anfragen auch korrekt sortiert zurückgibt.