Signatur
Beschreibung
mysql_client_encoding() gibt den Namen des Zeichensatzes zurück, der für die angegebene MySQL-Verbindung aktuell aktiv ist. Dies entspricht dem Zeichensatz, der beim Aufbau der Verbindung oder durch einen expliziten SET NAMES-Befehl gesetzt wurde.
Die Funktion ist nützlich, wenn man sicherstellen möchte, dass die Verbindung mit dem erwarteten Zeichensatz (z. B. utf8 oder latin1) arbeitet, bevor Daten gelesen oder geschrieben werden. Zeichensatz-Fehlanpassungen können zu Datenverlust oder Darstellungsfehlern bei Sonderzeichen führen.
Achtung: Die gesamte mysql_*-Erweiterung ist seit PHP 5.5.0 als veraltet (deprecated) markiert und wurde in PHP 7.0.0 vollständig entfernt. Für neue Projekte sollte stattdessen mysqli_character_set_name() oder PDO verwendet werden.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $link_identifier | resource | NULL | Die MySQL-Verbindungsressource, die von mysql_connect() zurückgegeben wurde. Wird NULL übergeben oder der Parameter weggelassen, wird die zuletzt geöffnete Verbindung verwendet. |
Rückgabewert
"utf8" oder "latin1".Beispiele
Aktuellen Zeichensatz einer MySQL-Verbindung ermitteln
<?php
$link = mysql_connect('localhost', 'benutzer', 'passwort');
if (!$link) {
die('Verbindung fehlgeschlagen: ' . mysql_error());
}
$zeichensatz = mysql_client_encoding($link);
echo 'Aktueller Zeichensatz: ' . $zeichensatz;
mysql_close($link);
?>
Zeichensatz prüfen und bei Bedarf auf UTF-8 umstellen
<?php
$link = mysql_connect('localhost', 'benutzer', 'passwort');
if (!$link) {
die('Verbindung fehlgeschlagen: ' . mysql_error());
}
$zeichensatz = mysql_client_encoding($link);
if ($zeichensatz !== 'utf8') {
mysql_set_charset('utf8', $link);
echo 'Zeichensatz wurde auf utf8 geändert.';
} else {
echo 'Zeichensatz ist bereits utf8.';
}
mysql_close($link);
?>
// Wichtig · Fallstricke
Deprecation-Hinweis: Die mysql_*-Erweiterung wurde in PHP 5.5.0 als veraltet markiert und in PHP 7.0.0 endgültig entfernt. Code, der diese Funktion verwendet, ist auf modernen PHP-Versionen nicht lauffähig. Verwende stattdessen mysqli_character_set_name() (prozedurale Variante) oder PDO::getAttribute(PDO::ATTR_CLIENT_VERSION).
Ein falscher Zeichensatz kann bei der Verarbeitung von Nutzereingaben zu Sicherheitslücken führen, da bestimmte Multibyte-Kodierungen (z. B. gbk) in Verbindung mit mysql_real_escape_string() zu SQL-Injection-Angriffen missbraucht werden können. Es wird dringend empfohlen, immer utf8 oder utf8mb4 zu verwenden.