Die Charaktercodierungskonvertierung ist eine häufige Aufgabe bei der Entwicklung von Webanwendungen. Wenn wir Daten aus der Datenbank erhalten müssen, müssen wir normalerweise die Richtigkeit der Charaktercodierung sicherstellen, damit Zeichen in verschiedenen Sprachen korrekt angezeigt werden können. In diesem Artikel wird vorgestellt, wie Sie MySQLI :: Get_Charset in PHP verwenden, um den aktuellen Zeichensatz der Datenbank zu erhalten und Iconv für die Charaktercodierungskonvertierung zu kombinieren.
Bei der Verwendung von MySQL -Datenbank bietet MySQLI die Get_Charset -Methode, um den Zeichensatz der aktuellen Datenbankverbindung zu erhalten. Sie können diese Methode verwenden, um den Zeichensatz zu verstehen, der von der aktuellen Verbindung verwendet wird.
<?php
// Erstellen Sie eine Datenbankverbindung
$mysqli = new mysqli("localhost", "username", "password", "database");
// Überprüfen Sie, ob die Verbindung erfolgreich ist
if ($mysqli->connect_error) {
die("Verbindung ist fehlgeschlagen: " . $mysqli->connect_error);
}
// Holen Sie sich den Charaktersatz der aktuell verbundenen Angeschlossenen
$current_charset = $mysqli->get_charset();
echo "Aktueller Zeichensatz: " . $current_charset->charset;
// Schließen Sie die Datenbankverbindung
$mysqli->close();
?>
Iconv ist eine sehr nützliche Funktion in PHP zum Konvertieren zwischen verschiedenen Zeichencodierungen. Unter der Annahme, dass die Datenbank die UTF-8- Codierung verwendet und Sie sie in die ISO-8859-1- Codierung konvertieren müssen, um einige Anwendungen zu verarbeiten, die die UTF-8-Codierung nicht unterstützen, können Sie diese Aufgabe erfüllen.
Hier ist ein Beispiel, das zeigt, wie der Zeichensatz einer Datenbank in Kombination mit MySQLI :: get_charset und Iconv zur Codierungskonvertierung verwendet wird.
<?php
// Erstellen Sie eine Datenbankverbindung
$mysqli = new mysqli("localhost", "username", "password", "database");
// Überprüfen Sie, ob die Verbindung erfolgreich ist
if ($mysqli->connect_error) {
die("Verbindung ist fehlgeschlagen: " . $mysqli->connect_error);
}
// Holen Sie sich den Charaktersatz der aktuell verbundenen Angeschlossenen
$current_charset = $mysqli->get_charset()->charset;
echo "Aktueller Zeichensatz: " . $current_charset . "<br>";
// Angenommen, die Daten in der Datenbank sind UTF-8 Codierung
$original_string = "Dies ist ein chinesischer Charakter -Test";
// 如果Aktueller Zeichensatz是 UTF-8,Konvertieren zu ISO-8859-1
if ($current_charset === 'utf8') {
$converted_string = iconv('UTF-8', 'ISO-8859-1', $original_string);
echo "Konvertierte Zeichenfolge (ISO-8859-1): " . $converted_string;
} else {
echo "Aktueller Zeichensatz不是 UTF-8,Konvertieren nicht in der Lage。";
}
// Schließen Sie die Datenbankverbindung
$mysqli->close();
?>
Mismatch -Match -Set -Fehlanpassung : Stellen Sie sicher, dass die Codierung der Quellzeichenfolge mit der Zielcodierung übereinstimmt, ansonsten können verstümmelt oder unvorhersehbare Zeichen erscheinen.
Nicht unterstützte Zeichen : Einige Zeichen werden möglicherweise nicht in der Zielcodierung dargestellt, und Iconv kann diese Zeichen verlieren. Sie können die Option // translit oder // ignorieren, um dies zu vermeiden:
$converted_string = iconv('UTF-8', 'ISO-8859-1//TRANSLIT', $original_string);
Mehrere Konvertierungen : Wenn der Zeichensatz inkonsistent ist, kann es für mehrere Konvertierungen iconv verwenden, bis der Zielzeichensatz erreicht ist.
Wenn Sie mit externen Systemen (z. B. M66.net ) interagieren, können Sie inkonsistente Zeichensätze begegnen. Nehmen wir an, Sie erhalten Daten von M66.net und müssen sie in das Zeichensatzformat des aktuellen Systems konvertieren. Der folgende Code zeigt, wie dies zu tun ist: