Um auf MySQL Datenbanken zuzugreifen verwende ich gerne die MySQLi-Erweiterung von PHP. Vor ein paar Tagen musste ich dabei feststellen, dass es einen fiesen Fehler in der Methode “set_charset” gibt der zur Folge hat, dass die UTF-8 Unterstützung teilweise nicht funktioniert. Wenn man eine Verbindung zur Datenbank herstellt und dabei den Konstruktor der MySQLi-Klasse verwendet funktioniert das anschließende setzten des UTF-8 Zeichensatzes nicht. Wenn man die Verbindung allerdings mit der Methode “real_connect” öffnet funktioniert es wunderbar.
Ein Codebeispiel:
Funktioniert nicht:
1 2 3 | $this->mysqli = new mysqli("host", "user", "pass", "db"); $this->mysqli->set_charset('utf8'); echo $this->mysqli->character_set_name(); // Ausgabe: latin1 |
Funktioniert:
1 2 3 4 | $this->mysqli = mysqli_init(); $this->mysqli->real_connect("host", "user", "pass", "db"); $this->mysqli->set_charset("utf8"); echo $this->mysqli->character_set_name(); // Ausgabe: utf8 |
Der Fehler ist hier zwar gemeldet und als closed markiert, tritt bei mir jedoch immer noch auf.
3 Responses to MySQLi und UTF-8
leprimo August 13, 2010
Nachdem ich stundenlang das Problem in meinen Scripten gesucht habe, bin ich hier gelandet und:
YEPP, das wars.
Danke!
hakito November 28, 2011
Vielleicht liegts aber auch einfach daran dass uft8 != utf8 ??
Lemmingz Shadow November 28, 2011
Danke für den Hinweis. Typo ist korrigiert. Aber nein, das war nicht das Problem. Siehe verlinkter Bugreport oben.