In der PHP-Entwicklung sind chinesische Merkmale verstümmelt ein häufiges Problem bei der Behandlung von Datenbank- und Front-End-Datenübertragung. Besonders bei Verwendung von MySQLI :: get_charset und JSON_Encode kann es zu korrigiertem chinesischen Inhalt führen, wenn der Zeichensatz nicht korrekt konfiguriert ist. In diesem Artikel wird erläutert, wie dieses Problem behoben und sicherstellt, dass chinesische Zeichen bei der Interaktion mit einer MySQL -Datenbank korrekt übergeben werden können.
Stellen Sie zunächst sicher, dass der Zeichensatz korrekt auf UTF-8 eingestellt ist, wenn die Datenbankverbindung angeschlossen ist, damit MySQL chinesische Zeichen korrekt verarbeiten kann. Wir verwenden die MySQLI -Erweiterung, um eine Verbindung zur Datenbank herzustellen, und dann MySQLI :: get_charset, um die aktuellen Zeichensatzeinstellungen zu erhalten. Sicherzustellen, dass das Zeichensatz UTF-8 ist, ist ein wichtiger Schritt zur Lösung des verstümmelten Problems.
<?php
// Stellen Sie eine Verbindung zur Datenbank her
$mysqli = new mysqli('localhost', 'root', '', 'test_db');
// Überprüfen Sie, ob die Verbindung erfolgreich ist
if ($mysqli->connect_error) {
die('Verbindung ist fehlgeschlagen: ' . $mysqli->connect_error);
}
// Stellen Sie den Zeichen auf UTF-8
$mysqli->set_charset('utf8');
// Holen Sie sich den aktuellen Zeichensatz
$current_charset = $mysqli->get_charset();
echo "Aktueller Zeichensatz: " . $current_charset->charset;
// Datenbankabfrage durchführen und chinesische Daten ausgeben
$query = "SELECT name FROM users WHERE id = 1";
$result = $mysqli->query($query);
$row = $result->fetch_assoc();
// Ausgabe von Abfragenergebnissen
echo json_encode($row);
?>
Wenn wir chinesische Daten aus der Datenbank abfragen und sie über JSON_Encode codieren, können chinesische Zeichen verstümmelt, wenn der Zeichensatz nicht richtig eingestellt ist. Um dies zu vermeiden, können wir den Parameter JSON_Unescaped_unicode verwenden, um sicherzustellen, dass chinesische Zeichen nicht entkommen sind.
<?php
// Stellen Sie eine Verbindung zur Datenbank her
$mysqli = new mysqli('localhost', 'root', '', 'test_db');
// Überprüfen Sie, ob die Verbindung erfolgreich ist
if ($mysqli->connect_error) {
die('Verbindung ist fehlgeschlagen: ' . $mysqli->connect_error);
}
// Stellen Sie den Zeichen auf UTF-8
$mysqli->set_charset('utf8');
// Holen Sie sich den aktuellen Zeichensatz
$current_charset = $mysqli->get_charset();
echo "Aktueller Zeichensatz: " . $current_charset->charset;
// Datenbankabfrage durchführen und chinesische Daten ausgeben
$query = "SELECT name FROM users WHERE id = 1";
$result = $mysqli->query($query);
$row = $result->fetch_assoc();
// verwenden json_encode Chinesisch ausgeben,Stellen Sie sicher, dass chinesische Charaktere nicht entkommen sind
echo json_encode($row, JSON_UNESCAPED_UNICODE);
?>
Wenn der von Ihnen verwendete Zeichensatz der Datenbanktabelle nicht UTF-8 ist, können Sie Probleme mit dem Charakterkonvertierung stoßen. Um sicherzustellen, dass in der gesamten Entwicklungsumgebung keinen verstümmelten Code auftritt, wird empfohlen, die folgenden Elemente zu überprüfen:
Zeichensatz von Datenbank: Verwenden Sie UTF8MB4 oder UTF8 .
Zeichensatz von Datentabellen: Die folgenden SQL -Abfragen können zum Anzeigen und Ändern des Zeichensatzes einer Tabelle verwendet werden:
SHOW CREATE TABLE users;
ALTER TABLE users CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
Verbundener Zeichensatz: Setzen Sie in PHP den Zeichen, der von mySQLI-> set_charset ('utf8') eingestellt ist.
Zusätzlich zur obigen Konfiguration ist es auch der Schlüssel, um sicherzustellen, dass der Browser auch chinesische Daten korrekt dekodieren kann. Eine übliche Praxis besteht darin, das folgende Meta -Tag dem <kopf> -Tag einer Webseite hinzuzufügen:
<meta charset="UTF-8">
Dies stellt sicher, dass der Browser chinesische Zeichen korrekt analysiert und verstümmelte Code vermeidet.
Wenn Sie MySQLI :: get_charset mit JSON_Encode für die chinesische Zeichenverarbeitung verwenden, ist die korrekte Konfiguration des Zeichensatzes der Schlüssel zur Vermeidung von Problemen mit verstümmelten Code. Stellen Sie sicher, dass der Datenbankverbindungszeichen auf UTF8 oder UTF8MB4 gesetzt ist, und fügen Sie den Parameter json_unescaped_unicode hinzu, wenn JSON_Encode verwendet wird, was das Problem von Kelselchinien effektiv vermeiden kann.
Durch die Einführung dieses Artikels sollte es Ihnen helfen, die Probleme zu vermeiden, die durch chinesischen verstümmelten Code verursacht werden, wenn Sie MySQLI und JSON_Encode verwenden.