MySQLi und UTF-8
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('uft8'); 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.
