Signatur
Beschreibung
mysqli_get_charset() liefert ein Objekt mit detaillierten Metadaten zum aktuell aktiven Zeichensatz einer mysqli-Datenbankverbindung. Das zurückgegebene Objekt enthält unter anderem den Zeichensatznamen, die Kollation, den Kommentar sowie die minimale und maximale Anzahl an Bytes pro Zeichen.
Die Funktion ist besonders nützlich, wenn Sie sicherstellen möchten, dass eine Verbindung den erwarteten Zeichensatz verwendet – etwa nach einem Aufruf von mysqli_set_charset(). So können Sie prüfen, ob der gewünschte Zeichensatz (z. B. utf8mb4) tatsächlich aktiv ist, bevor Sie Benutzerdaten in die Datenbank schreiben oder auslesen.
Das zurückgegebene Objekt besitzt folgende Eigenschaften: charset (Zeichensatzname), collation (Kollationsname), dir (Verzeichnis der Zeichensatzdatei, meist leer), min_length (minimale Bytelänge), max_length (maximale Bytelänge), number (interne Nummer), state (Status).
Als objektorientierte Variante steht $mysqli->get_charset() zur Verfügung. Beide Varianten liefern dasselbe Ergebnis.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $mysql Pflicht | mysqli | Ein aktives mysqli-Verbindungsobjekt, wie es von mysqli_connect() oder new mysqli() zurückgegeben wird. |
Rückgabewert
null zurückgegeben.Beispiele
Aktuellen Zeichensatz einer Verbindung auslesen
<?php
$mysqli = new mysqli('localhost', 'benutzer', 'passwort', 'testdb');
if ($mysqli->connect_errno) {
die('Verbindungsfehler: ' . $mysqli->connect_error);
}
$charset = mysqli_get_charset($mysqli);
if ($charset !== null) {
echo 'Zeichensatz: ' . $charset->charset . PHP_EOL;
echo 'Kollation: ' . $charset->collation . PHP_EOL;
echo 'Min. Bytes: ' . $charset->min_length . PHP_EOL;
echo 'Max. Bytes: ' . $charset->max_length . PHP_EOL;
} else {
echo 'Konnte den Zeichensatz nicht ermitteln.';
}
$mysqli->close();
Zeichensatz setzen und anschließend verifizieren
<?php
$mysqli = new mysqli('localhost', 'benutzer', 'passwort', 'testdb');
if ($mysqli->connect_errno) {
die('Verbindungsfehler: ' . $mysqli->connect_error);
}
// Gewünschten Zeichensatz setzen
$mysqli->set_charset('utf8mb4');
// Prüfen, ob der Zeichensatz korrekt gesetzt wurde
$charset = $mysqli->get_charset();
if ($charset !== null && $charset->charset === 'utf8mb4') {
echo 'utf8mb4 ist korrekt aktiv. Kollation: ' . $charset->collation;
} else {
echo 'Achtung: Unerwarteter Zeichensatz aktiv: ' . ($charset->charset ?? 'unbekannt');
}
$mysqli->close();
// Wichtig · Fallstricke
Sicherheitshinweis: Stellen Sie immer sicher, dass die Verbindung den Zeichensatz utf8mb4 verwendet, bevor Sie Nutzerdaten in die Datenbank schreiben. Ein falsch gesetzter Zeichensatz kann in seltenen Randfällen dazu beitragen, dass Sicherheitsmechanismen wie mysqli_real_escape_string() umgangen werden. Verwenden Sie stets mysqli_set_charset() (nicht SET NAMES via Query) und verifizieren Sie das Ergebnis mit mysqli_get_charset().
Die Eigenschaft dir des zurückgegebenen Objekts ist bei modernen MySQL/MariaDB-Versionen in der Regel ein leerer String, da Zeichensatz-Definitionen intern gespeichert werden.