MySQL: Charset-Setup via PHP

Datum: 05.07.2012

MySQL hat fast ein Dutzend Systemvariablen, die den Einsatz eines bestimmten Zeichensatzes für einen bestimmten Zweck oder eine bestimmte Ressource (Datenbank, Verbindung, Dateisystem...) regeln. Diese Einstellungen können nicht nur von Server zu Server, sondern auch zwischen einzelnen MySQL-Versionen stark variieren.
Aus diesem Grund empfiehlt es sich in manchen Fällen, die Werte der Systemvariablen skriptseitig festzulegen:

$charsetCfg = array(
	"character_set_client" => "utf8",
	"character_set_connection" => "utf8",
	"character_set_database" => "latin1",
	"character_set_filesystem" => "binary",
	"character_set_results" => "utf8",
	"character_set_server" => "latin1",
	"collation_connection" => "utf8_general_ci",
	"collation_database" => "latin1_swedish_ci",
	"collation_server" => "latin1_swedish_ci"
);

foreach( $charsetCfg as $k => $v ){
	$query = "SET $k = '$v'";
	mysql_query( $query ) or die( mysql_error() );
}

Hat man keine Ahnung, auf welche Werte man die Variablen setzen soll, empfiehlt sich das Auslesen der Systemvariablen (möglichst auf einem System, auf dem die Software läuft).

Fragen, Anmerkungen, Korrekturen zu diesem Artikel »