Start · Sprachen · PHP · Referenz · mysql_client_encoding

mysql_client_encoding

Funktion

Gibt den Namen des aktuell verwendeten Zeichensatzes der MySQL-Verbindung zurück.

seit PHP 4.3.0 Kategorie: db

Signatur

mysql_client_encoding(resource $link_identifier = NULL): string

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

Typ
string
Beschreibung
Gibt den Namen des aktuell verwendeten Zeichensatzes als Zeichenkette zurück, z. B. "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);
?>
Aktueller Zeichensatz: latin1

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);
?>
Zeichensatz wurde auf utf8 geändert.

// 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.