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.

Comments

  1. Nachdem ich stundenlang das Problem in meinen Scripten gesucht habe, bin ich hier gelandet und:
    YEPP, das wars.
    Danke!


    leprimo
    August 13th, 2010