Hi!
An der Konsole können andere Konfigurationseinstellungen gelten (z.B. ~/my.cnf) als für den Zugriff via PHP. Lass dir lieber die VARIABLES von einem PHP-Script anzeigen.
Ich habe weder auf dem Server noch hier auf meinem Arbeitsplatzrechner eine eigene my.cnf, sondern nur die globale unter /etc/mysql. Aber in der Tat, schreibe ich mir ein Skript, das mir alle Variablen anzeigt, so stehen »character_set_client«, »character_set_connection« und »character_set_results« auf latin1, obwohl diese in der Konsole den Wert utf8 haben. Jetzt würde es mich nur noch interessieren, wo dies gesetzt wird. Ich mache mich mal auf die Suche ;-)
Auch der Tipp aus den User-Kommentaren mit dem
[mysqld]
init-connect='SET NAMES utf8'in der my.cnf bringt leider nichts.
Hast du nach der Änderung den MySQL-Server die Konfiguration neu lesen lassen? Bei mir wirkt diese Zeile in der Gegenrichtung sehr gut. »SET NAMES latin1« benötige ich für einige ältere Anwendungen. Gentoo hat mittlerweile (MySQL 4.1.14) alles my.cnf-Einstellungen auf utf8 gesetzt (wahrscheinlich ist dafür das UseFlag utf8 die Ursache).
Natürlich, der MySQL-Daemon wurde neugestartet, aber leider wird »SET NAMES utf8« offensichtlich nicht ausgeführt bzw. hat keine Auswirkungen für den Zugriff mit PHP.
Ich habe außerdem jetzt noch gerade ins Ebuild für mysql-4.1.4 geschaut und dort wird UTF-8 tatsächlich als Standard für das Config-Layout gesetzt, wenn es sich um eine MySQL-Version > 4.1.3 handelt und zudem noch das USE-Flag »utf8« gesetzt ist.
Grüße,
Fabian St.