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('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.

Fork me on GitHub
3 Responses to MySQLi und UTF-8
  1. leprimo Reply

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

  2. hakito Reply

    Vielleicht liegts aber auch einfach daran dass uft8 != utf8 ??

  3. Lemmingz Shadow Reply

    Danke für den Hinweis. Typo ist korrigiert. Aber nein, das war nicht das Problem. Siehe verlinkter Bugreport oben.

Leave a Reply

Your email address will not be published. Please enter your name, email and a comment.

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="" highlight="">