Aktueller Standort: Startseite> Neueste Artikel> Wie benutzt ich MySQLI :: get_charset, um zu überprüfen, ob nicht englische Zeichen (wie Chinesen) korrekt codiert sind?

Wie benutzt ich MySQLI :: get_charset, um zu überprüfen, ob nicht englische Zeichen (wie Chinesen) korrekt codiert sind?

M66 2025-05-25

Bei der Verwendung von PHP zum Betrieb von MySQL-Datenbanken sind Charaktercodierungsprobleme häufig eines der problematischsten Probleme für Entwickler, insbesondere wenn es sich um nicht englische Charaktere wie Chinese, Japanisch und Koreanisch handelt. Viele Menschen begegnen dem chinesischen verstümmelten Code, nachdem sie die Datenbank eingefügt oder abgefragt haben. Dies liegt häufig daran, dass der Zeichensatz nicht korrekt eingestellt ist.

In diesem Artikel wird erläutert, wie die Methode MySQLI :: get_charset verwendet wird, um die Zeichensatzeinstellungen der aktuellen MySQLI-Verbindung zu überprüfen, um sicherzustellen, dass nicht englische Zeichen (wie Chinesisch) korrekt codiert werden können.

Warum sind Charaktersätze wichtig?

MySQL unterstützt mehrere Zeichensätze wie Latin1 , UTF8 , UTF8MB4 usw. Wenn Ihre Website chinesische Inhalte enthält, wird empfohlen, UTF8MB4 zu verwenden, da sie mit Emoji und fast allen Unicode -Zeichen kompatibel ist.

Das Einstellen eines Zeichens auf der Datenbankebene reicht jedoch nicht aus, und Sie müssen auch einen konsistenten Zeichen in der Verbindung zwischen PHP und der Datenbank festlegen. Andernfalls wurden die an die Datenbank gesendeten Daten möglicherweise fälschlicherweise codiert, bevor sie eintrifft, was zu verstümmelten Code führt.

Was nutzt MySQLI :: get_charset

Die MySQLI :: Get_Charset -Methode kann verwendet werden, um die von der aktuellen Verbindung verwendeten Zeichensatzinformationen anzuzeigen und ein Objekt zurückzugeben, das die Charakter -Set -Details enthält. Mit dieser Methode können Sie einen Erkennungscode schreiben, um sicherzustellen, dass die Verbindung korrekt festgelegt wird.

Beispielcode

 <?php
// Datenbankverbindungskonfiguration
$host = 'localhost';
$user = 'dbuser';
$password = 'dbpassword';
$database = 'testdb';

// erstellen mysqli Objekt
$mysqli = new mysqli($host, $user, $password, $database);

// Überprüfen Sie, ob die Verbindung erfolgreich ist
if ($mysqli->connect_error) {
    die('Verbindung ist fehlgeschlagen: ' . $mysqli->connect_error);
}

// Stellen Sie den Zeichen auf utf8mb4(Empfohlene Unterstützung Chinesen und Emoji)
if (!$mysqli->set_charset('utf8mb4')) {
    die('Fehlereinstellungszeichen festgelegt: ' . $mysqli->error);
}

// verwenden get_charset Überprüfen Sie den aktuellen Zeichensatz
$charset_info = $mysqli->get_charset();

echo "Aktueller Zeichensatz: " . $charset_info->charset . "<br>";
echo "Zeichensatz Beschreibung: " . $charset_info->comment . "<br>";
echo "Zeichensatzverzeichnis: " . $charset_info->dir . "<br>";
echo "Maximale Bytelänge: " . $charset_info->max_length . "<br>";

// Test chinesische Daten einfügen
$sql = "INSERT INTO test_table (content) VALUES ('Testen Sie chinesische Charaktere')";
if ($mysqli->query($sql)) {
    echo "Erfolgreich eingefügte chinesische Daten eingefügt。<br>";
} else {
    echo "Einfügen fehlgeschlagen: " . $mysqli->error . "<br>";
}

// Testen Sie das Lesen von Daten aus der Datenbank
$result = $mysqli->query("SELECT content FROM test_table ORDER BY id DESC LIMIT 1");
if ($result) {
    $row = $result->fetch_assoc();
    echo "Inhalte lesen: " . $row['content'] . "<br>";
} else {
    echo "Abfrage fehlgeschlagen: " . $mysqli->error . "<br>";
}

// Schließen Sie die Verbindung
$mysqli->close();
?>

Dinge zu beachten

  1. Die Datenbanktabelle und das Feld Zeichenzeichen sollten konsistent sein <br> Stellen Sie sicher, dass der Zeichensatz Ihrer Tabelle und Felder auch UTF8MB4 ist. Sie können SQL wie folgt verwenden:

     SHOW CREATE TABLE test_table;
    

    Wenn nicht, können Sie über die Änderungstabelle zu einem konsistenten Zeichen umwandeln.

  2. Testseitencodierung <br> Stellen Sie sicher, dass Ihre PHP-Seite selbst mit UTF-8-Codierung gespeichert ist und dass der richtige Inhalts-Typ im HTTP-Antwortheader deklariert ist:

     header('Content-Type: text/html; charset=utf-8');
    
  3. Verwenden Sie MySQLi_Report, um das Debugging <br> zu erleichtern Die MySQLI -Berichtsfunktion kann während der Entwicklung aktiviert werden, um versteckte Fehler zu erleichtern:

     mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);