Mysqli :: Zeichen_Set_Name ist eine Methode in der MySQLI -Erweiterung von PHP, die den von der aktuellen Datenbankverbindung verwendeten Zeichensatznamen zurückgibt. Der Prototyp dieser Methode lautet wie folgt:
string mysqli::character_set_name ( void )
Dies bedeutet, dass Sie es aufrufen können, bevor Sie den SQL -Vorgang ausführen, um zu bestätigen, dass der von der Verbindung verwendete Zeichensatz mit Ihrer Datenbankkonfiguration übereinstimmt.
MySQL unterstützt mehrere Zeichensätze wie UTF8 , UTF8MB4 , Latin1 usw. Inkonsistente Zeichensätze können zu folgenden Problemen führen:
Chinesische Charaktere sind verstümmelt oder abgeschnitten
Abfragen mit mehrsprachigen Inhalten kann nicht korrekt ausgeführt werden
Eine Ausnahme trat auf, nachdem die Daten in die Datenbank geschrieben wurden, um erneut zu lesen
Probleme sind besonders häufig, insbesondere wenn der Standardzeichen von Mysql nicht mit dem von PHP verwendeten Zeichensatz übereinstimmt. Daher ist es eine gute Praxis, den in der Zeit festgelegten Charakter zu überprüfen, nachdem die Verbindung hergestellt wurde.
Hier ist ein vollständiges Beispiel zum Erkennen und Bestätigen der Zeichensatzeinstellungen der aktuell verbundenen:
<?php
$mysqli = new mysqli("localhost", "user", "password", "database");
// Überprüfen Sie, ob die Verbindung erfolgreich ist
if ($mysqli->connect_errno) {
die("Verbindung ist fehlgeschlagen: " . $mysqli->connect_error);
}
// Holen Sie sich den Charaktersatz der aktuell verbundenen Angeschlossenen
$currentCharset = $mysqli->character_set_name();
echo "Der von der aktuelle Verbindung verwendete Zeichensatz ist: " . $currentCharset;
// Überprüfen Sie, ob es der erwartete Zeichensatz ist,Zum Beispiel utf8mb4
if ($currentCharset !== 'utf8mb4') {
echo "Zeichensatz inkonsistent,Einstellung als utf8mb4...";
if (!$mysqli->set_charset("utf8mb4")) {
die("Versäumte das Set -Zeichensatz: " . $mysqli->error);
}
echo "Der Charakter -Set wurde auf aktualisiert: " . $mysqli->character_set_name();
}
?>
Nachdem dieses Beispiel mit der Datenbank verbunden ist, gibt es zunächst den aktuell verwendeten Zeichensatz aus. Wenn es nicht UTF8MB4 ist, versuchen Sie, den Zeichensatz zurückzusetzen. Durch die Zusammenarbeit mit MySQLI :: Set_Charset und MySQLI :: Zeichen_Set_Name stellen Sie sicher, dass die Zeichenset vollständig konsistent ist.
Wenn Sie sicherstellen möchten, dass der von PHP verwendete Zeichensatz genau dem Standardzeichen auf der Serverseite entspricht, sollten Sie die Standardeinstellungen aus der Konfigurationsdatei von MySQL (normalerweise my.cnf oder my.ini ) lesen.
Sie können beispielsweise die folgende SQL-Abfrage verwenden, um die serverseitigen Standard-Zeichensatzeinstellungen anzuzeigen:
<?php
$result = $mysqli->query("SHOW VARIABLES LIKE 'character_set_server'");
$row = $result->fetch_assoc();
$serverCharset = $row['Value'];
echo "MySQLDer Standard -Zeichensatz des Servers ist: " . $serverCharset;
if ($mysqli->character_set_name() !== $serverCharset) {
echo "检测到Zeichensatz inkonsistent,Versuchen zu synchronisieren...";
if (!$mysqli->set_charset($serverCharset)) {
die("Versäumte das Set -Zeichensatz: " . $mysqli->error);
}
echo "Der Zeichensatz wurde als synchronisiert als: " . $mysqli->character_set_name();
}
?>
Dieser Code überprüft nicht nur den aktuell verbundenen Zeichensatz, sondern vergleicht ihn auch mit dem Standard -Zeichensatz des Servers und synchronisiert automatisch die Zeichensatzeinstellungen, um die Datenkonsistenz weiter zu gewährleisten.