Nur zwei eine Zeilen Code reicht, um Herr über das Chaos der Zeichencodierung eines PHP-MySQL-Projektes zu werden. Falls jemand von euch auch mal vor dem Problem stehen sollte, dass Umlaute trotz aller Experimente die “Datenbank-Kollation” und “charset” auf UTF-8 umzustellen nicht wie gewünscht dargestellt bzw. abgelegt werden, dann spart euch erstmal den Versuch durch wildes Ersetzen der “krummen” Zeichen das Problem in den Griff zu bekommen. Versucht erst einmal folgende 2 Zeilen Code in eure Datenbank-Verbindung einzutragen:
mysql_query("SET NAMES 'utf8'"); mysql_query("SET CHARACTER SET 'utf8'");
UPDATE: Im Gesamtzusammenhang könnte die Datenbankverbindung dann so aussehen:
<?php $con = mysql_connect("localhost","user","password"); if (!$con) { die('Could not connect: ' . mysql_error()); } mysql_select_db("database", $con); mysql_query("SET NAMES 'utf8'"); // mysql_query("SET CHARACTER SET 'utf8'"); ?>
Bei meinem Problem hat es Wunder gewirkt. Warum bin ich nicht schon viel früher darauf gestoßen?
Danke an Oliver, damit hat sich der Aufwand nochmals um eine Zeile reduziert ![]()
das war der entscheidende tip.
++thx+
Danke! Wirklich ein extrem hilfreicher Tipp!
Toller Tip. Aber ein kleiner Hinweis:
Beide Codes stellen die gleichen entscheidenen Variablen ein, aber auf unterschiedliche Weise. Nur einer ist nötig und “SET NAMES utf8″ ist die bessere Wahl.
Nachlesen unter der MySQL-Doku: http://dev.mysql.com/doc/refman/5.1/de/charset-connection.html
DANKE!
Genial. Besten Dank!
Hi,
Danke für diesen Tip! Habe ewig Probleme mit jQuery gehabt. Das Konvertieren von scripts und db in utf-8 alleine hat nichts gebracht. Aber diese kleine Erweiterung hat geholfen. Ich bin sehr erleichtert.
Danke sehr!