PHP, MySQL und UTF-8

Auch wenn heutzutage das Unterstützen von UTF-8 auf Webseiten eigentlich zur Selbstverständlichkeit gehört, so findet man immer wieder PHP-Projekte, in denen die Verbindung zur mySQL-Datenbank einfach hergestellt wird, ohne dabei die Verbindung auf UTF-8 einzustellen. In vielen Fällen merkt man diesen Fehler nicht sofort, sondern erst dann, wenn man Umlaute oder andere Unicode-Zeichen verwendet.

Man sollte daher darauf achten, dass man nach dem Verbindungsaufbau den CharaterSet entsprechend einstellt. Hier ein Beispiel; die letzte Zeile stellt die Datenübertragung auf utf-8 ein.


$connection = mysql_connect($server, $user, $password);
mysql_select_db($databaseName ,$connection);
mysql_query("set names 'utf8';", $connection);

Aufgrund der Übersichtlichkeit wurde auf Fehlerbehandlung verzichtet (d.h. wer es einfach kopiert, sollte sich zumindest darüber noch Gedanken machen). Darüber hinaus sollte man natürlich sicherstellen, dass auch das Character-Encoding in der Webpage auf UTF-8 eingestellt ist (das ist der Default bei der HTML5 <!DOCTYPE html> Einleitung).

Wer mysqli verwendet, der nutzt statt dem oben gelisteten Code die set_charset Methode.

$connection->set_charset("utf8");

Gerd Riesselmann hat bereits vor Jahren einen guten Blog-Eintrag verfasst, wie man die Datenbank-Verbindung bzgl. UTF-8 überprüfen kann.

MySQL Docs:
http://dev.mysql.com/doc/refman/5.7/en/charset-connection.html

Comments are closed.