Start · Sprachen · PHP · Referenz · mysqli_character_set_name

mysqli_character_set_name

Funktion

Gibt den Namen des aktuell verwendeten Zeichensatzes (Charset) einer MySQLi-Datenbankverbindung zurück.

seit PHP 5.0.0 Kategorie: db

Signatur

mysqli_character_set_name(mysqli $mysql): string

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

Typ
string
Beschreibung
Gibt den Namen des aktuell für die Verbindung eingestellten Zeichensatzes zurück, z. B. 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);
Aktueller Zeichensatz: utf8mb4

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();
Vorher: utf8mb4 Nachher: utf8mb4

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