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:

$this->mysqli = new mysqli("host", "user", "pass", "db");
$this->mysqli->set_charset('utf8');
echo $this->mysqli->character_set_name(); // Ausgabe: latin1

Funktioniert:

$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 thoughts on “MySQLi und UTF-8

  1. leprimo

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

Leave a Reply

Your email address will not be published. Required fields are marked *

π