Heim >Backend-Entwicklung >PHP-Problem >So lösen Sie das Problem verstümmelter Zeichen, wenn PHP Daten aus der Datenbank liest
Beim Schreiben einer Website oder Anwendung mit PHP erscheinen beim Lesen von Daten aus der Datenbank manchmal verstümmelte Zeichen. Dies ist ein sehr häufiges Problem, aber es ist sehr ärgerlich. In diesem Artikel untersuchen wir die Ursachen für verstümmelte Daten beim Lesen von Daten aus der Datenbank in PHP und wie man diese beheben kann.
Ursache für verstümmelte Zeichen
Wenn beim Übertragen von Daten zwischen der Anwendung und der Datenbank unterschiedliche Zeichensätze verwendet werden, werden die Daten verstümmelt. Wenn die Datenbank beispielsweise den Zeichensatz UTF-8 und die Anwendung den Zeichensatz ISO-8859-1 verwendet, sind die aus der Datenbank erhaltenen Daten verstümmelt.
Wenn der Zeichensatz für die Datenbankverbindung nicht festgelegt ist, wird standardmäßig der Zeichensatz des Servers verwendet. Wenn der Zeichensatz des Servers nicht mit dem Zeichensatz der Datenbank übereinstimmt, werden während der Datenübertragung verstümmelte Zeichen angezeigt.
Manchmal handelt es sich bei den in der Datenbank gespeicherten Daten möglicherweise um gemischte Zeichensätze, z. B. wenn sie UTF-8- und GBK-codierte Zeichen im selben Feld enthalten. In diesem Fall werden beim Lesen der Daten verstümmelte Zeichen angezeigt.
Lösung
In MySQL kann der Datenbank-Zeichensatz mit dem folgenden Befehl geändert werden:
ALTER DATABASE database_name DEFAULT CHARACTER SET utf8;
Für Anwendungen kann der Zeichensatz in PHP mit dem folgenden Befehl auf UTF-8 gesetzt werden:
mysqli_set_charset($link, "utf8");
In MySQL können Sie den Zeichensatz festlegen, wenn Sie eine Verbindung zur Datenbank herstellen:
$link = mysqli_connect("localhost", "user", "password", "dbname"); mysqli_set_charset($link, "utf8");
Die Daten in MySQL können mit dem folgenden Befehl in UTF-8 konvertiert werden:
ALTER TABLE table_name CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
Alternativ kann der Text mit dem folgenden Code in PHP in UTF-8 konvertiert werden:
$data = mb_convert_encoding($data, "UTF-8", "auto");
Fazit
Für PHP aus der Datenbank Das Problem verstümmelter Lesedaten kann durch inkonsistente Zeichensätze während der Datenübertragung verursacht werden, der Zeichensatz für die Datenbankverbindung ist nicht festgelegt oder der Zeichensatz in der Datenbank ist verwirrend. Um diese Probleme zu vermeiden, können Sie die Datenbank und die Anwendung auf denselben Zeichensatz einstellen und den Zeichensatz festlegen, wenn Sie eine Verbindung zur Datenbank herstellen. Wenn weiterhin verstümmelte Zeichen angezeigt werden, können Sie versuchen, die Daten in der Datenbank zu bereinigen und alles in UTF-8 zu konvertieren.
Das obige ist der detaillierte Inhalt vonSo lösen Sie das Problem verstümmelter Zeichen, wenn PHP Daten aus der Datenbank liest. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!