Signatur
Beschreibung
mysqli_character_set_name() liefert den Namen des Zeichensatzes, der derzeit für die übergebene MySQLi-Verbindung aktiv ist. Typische Rückgabewerte sind beispielsweise utf8mb4, utf8 oder latin1.
Die Funktion ist nützlich, um sicherzustellen, dass die Verbindung den erwarteten Zeichensatz verwendet – etwa nach dem Setzen eines neuen Zeichensatzes mit mysqli_set_charset(). Sie eignet sich gut zum Debuggen und zur Überprüfung der Verbindungsparameter.
In objektorientierten Anwendungen steht die entsprechende Methode mysqli::character_set_name() zur Verfügung. Beide Varianten liefern denselben Wert und sind äquivalent.
Hinweis: Der Zeichensatz beeinflusst, wie Zeichenketten zwischen PHP und MySQL interpretiert werden. Ein falscher Zeichensatz kann zu Datenverlust oder Sicherheitsproblemen (z. B. bei der Maskierung) führen. Es empfiehlt sich stets, utf8mb4 zu verwenden und dies mit dieser Funktion zu verifizieren.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $mysql Pflicht | mysqli | Ein von mysqli_connect() oder mysqli_init() erzeugtes MySQLi-Verbindungsobjekt. |
Rückgabewert
utf8mb4 oder latin1.Beispiele
Aktuellen Zeichensatz einer Verbindung ausgeben (prozedural)
<?php
$mysqli = mysqli_connect('localhost', 'benutzer', 'passwort', 'testdb');
if (!$mysqli) {
die('Verbindungsfehler: ' . mysqli_connect_error());
}
$charset = mysqli_character_set_name($mysqli);
echo 'Aktueller Zeichensatz: ' . $charset;
mysqli_close($mysqli);
Zeichensatz nach mysqli_set_charset() überprüfen (objektorientiert)
<?php
$mysqli = new mysqli('localhost', 'benutzer', 'passwort', 'testdb');
if ($mysqli->connect_errno) {
die('Verbindungsfehler: ' . $mysqli->connect_error);
}
// Zeichensatz vor dem Ändern
echo 'Vorher: ' . $mysqli->character_set_name() . PHP_EOL;
// Zeichensatz auf utf8mb4 setzen
$mysqli->set_charset('utf8mb4');
// Zeichensatz nach dem Ändern
echo 'Nachher: ' . $mysqli->character_set_name() . PHP_EOL;
$mysqli->close();
// Wichtig · Fallstricke
Sicherheitshinweis: Der Zeichensatz der Verbindung beeinflusst das Verhalten von mysqli_real_escape_string(). Ein falsch gesetzter Zeichensatz kann dazu führen, dass Maskierungen umgangen werden und SQL-Injection-Angriffe möglich werden. Verwenden Sie daher immer mysqli_set_charset() zum Setzen des Zeichensatzes (nicht SET NAMES per SQL) und verifizieren Sie das Ergebnis mit mysqli_character_set_name().
Für moderne Anwendungen wird utf8mb4 empfohlen, da es vollständiges Unicode inkl. Emoji und ergänzender Zeichen unterstützt, während das ältere utf8 in MySQL nur 3 Bytes pro Zeichen verwendet.