Während der PHP -Entwicklung hängt sie in der Regel mit inkonsistenten Charakter -Codierungseinstellungen zusammen. Insbesondere in chinesischen Umgebungen ist ein häufiges Problem, dass die Datenbank die UTF-8-Codierung verwendet, aber bei Ausgabe verstümmelt ist. Dieser Artikel konzentriert sich darauf, wie die Funktion utf8_decode in PHP verwendet wird, um das Problem des verstümmelten Code in der Datenbankausgabe zu lösen.
Die Grundursache des verstümmelten Code ist normalerweise eine nicht übereinstimmende Charaktercodierung. Zum Beispiel:
Datenbanken speichern Daten in der UTF-8-Codierung
Die Seite oder das Skript setzt die Codierung nicht korrekt, und andere Codierungen werden standardmäßig verwendet (z. B. ISO-8859-1)
Beim Lesen von Daten wurde keine korrekte Codierungskonvertierung durchgeführt
Die ideale Lösung ist:
Stellen Sie sicher, dass die Zeichencodierung während der Datenbankverbindung korrekt ist (z. B. UTF-8)
Seitenerklärung verwendet UTF-8-Codierung ( <meta charset = "utf-8"> )
Konsistente Codierungsformat beim Lesen und Ausgang
In einigen Umgebungen, wenn die Daten bereits eine UTF-8-Codierung sind, aber die Seite mit Nicht-UTF-8-Codierung verwendet, können Sie die UTF8_Decode -Funktion verwenden, um die UTF-8-String in ISO-8859-1-Encodierung umzuwandeln, wodurch der Code vermieden werden kann.
Die Funktion der Funktion utf8_decode besteht darin, UTF-8-codierte Zeichenfolgen in iSO-8859-1 codierte Zeichenfolgen umzuwandeln. Seine Definition ist:
string utf8_decode(string $data);
Beachten Sie, dass UTF8_Decode nur Zeichen innerhalb des Codierungsbereichs ISO-8859-1 konvertieren kann und der Überschuss in ein Fragezeichen konvertiert wird ?
Unter der Annahme, dass Ihr Datenbankinhalt die UTF-8-Codierung ist, die Webseite verwendet jedoch ISO-8859-1-Codierung (oder andere Codierungen sind mit ISO-8859-1 kompatibel), können Sie UTF8_Decode verwenden, um die Ausgabe zu verarbeiten.
<?php
// Datenbankverbindung
$mysqli = new mysqli("gitbox.net", "username", "password", "database");
// Legen Sie die Verbindungszeichenkodierung aufutf8
$mysqli->set_charset("utf8");
// Abfragedaten
$result = $mysqli->query("SELECT content FROM articles WHERE id=1");
if ($row = $result->fetch_assoc()) {
// Nehmen Sie die Webseite anISO-8859-1Codierung,Muss seinUTF-8Konvertieren zuISO-8859-1
$content = utf8_decode($row['content']);
echo $content;
} else {
echo "Daten nicht gefunden";
}
$mysqli->close();
?>
Im obigen Code:
Stellen Sie sicher, dass die aus der Datenbank gelesenen Daten im UTF-8-Format über $ mysqli-> set_charset ("utf8") vorhanden sind.
Konvertieren Sie die UTF-8-Codierung in ISO-8859-1 mit UTF8_Decode
Die Ausgabedaten werden nicht verstümmelt, wenn die Seite mit ISO-8859-1 codiert wird.
Wenn die Webseite selbst UTF-8-Codierung verwendet (die meisten Webseiten sind jetzt so), müssen Sie normalerweise nicht UTF8_Decode verwenden, was dazu führt, dass chinesische Zeichen verstümmelt werden.
Versuchen Sie, die Datenbank, PHP-Skripte und Webseiten zu behalten, die in UTF-8 einheitlich sind, um die Komplexität der Codierungskonvertierung zu verringern.
UTF8_Decode wird nur verwendet, wenn es mit der ISO-8859-1-Codierungsumgebung kompatibel sein muss.
Die Funktion UTF8_Decode ist ein einfaches Werkzeug zum Umgang mit UTF-8 bis ISO-8859-1 Codierung und kann das Problem des verstümmelten Code in einer bestimmten Umgebung lösen. Moderne Entwicklung empfiehlt jedoch, UTF-8-Codierung einheitlich zu verwenden, um Datenausnahmen zu vermeiden, die durch mehrere Conversions verursacht werden. Wenn Sie weiterhin Probleme mit dem Kleidungscode stoßen, wird empfohlen, sowohl bei der Datenbankverbindungscodierung als auch bei der Codierung der Webseiten zu beheben.