Heim  >  Artikel  >  Backend-Entwicklung  >  Was tun, wenn PHP verstümmelte chinesische Zeichen aus der Datenbank liest?

Was tun, wenn PHP verstümmelte chinesische Zeichen aus der Datenbank liest?

DDD
DDDOriginal
2023-06-06 11:13:041528Durchsuche

Lösung für den von PHP aus der Datenbank gelesenen verstümmelten chinesischen Code: 1. Verwenden Sie die Funktion „mysql_query“, um die MYSQL-Verbindungskodierung festzulegen und sicherzustellen, dass die Seitendeklarationskodierung mit der hier festgelegten Verbindungskodierung übereinstimmt. 2. Verwenden Sie FTP-Software um die Datei direkt online zu ändern; 3. Fügen Sie „AddDefaultCharset GB2312“ zur virtuellen Maschine der Konfigurationsdatei hinzu, um die globale Konfiguration zu überschreiben, oder konfigurieren Sie sie in .htaccess des Verzeichnisses.

Was tun, wenn PHP verstümmelte chinesische Zeichen aus der Datenbank liest?

Die Betriebsumgebung dieses Tutorials: Windows 10-System, PHP-Version 8.1.3, Dell g3-Computer.

Die Gründe für verstümmelte chinesische Zeichen beim Lesen der Datenbank durch PHP:

Im Allgemeinen gibt es zwei Gründe für das Auftreten verstümmelter Zeichen. Der erste ist auf die falsche Kodierungseinstellung (Zeichensatz) zurückzuführen, die dazu führt, dass der Browser dies tut Beim Parsen wird die falsche Codierung verwendet, was dazu führt, dass der Bildschirm voller chaotischer „himmlischer Bücher“ ist und dass die Datei beispielsweise in der falschen Codierung geöffnet und dann gespeichert wurde es wurde in UTF-8-Kodierung geöffnet und dann gespeichert. Um das obige Problem mit verstümmeltem Code zu lösen, müssen Sie zunächst wissen, welche Aspekte der Entwicklung eine Codierung beinhalten:

 1. Dateicodierung: bezieht sich auf die Codierung, in der die Auslagerungsdatei (.html, .php usw.) selbst gespeichert wird. Notepad und Dreamweaver erkennen beim Öffnen der Seite automatisch die Dateikodierung, sodass es weniger Probleme gibt. Allerdings erkennt ZendStudio die Kodierung nicht automatisch. Es öffnet die Datei nur in einer bestimmten Kodierung entsprechend der Konfiguration der Einstellungen. Wenn Sie die Datei während der Arbeit versehentlich mit der falschen Kodierung öffnen und sie nach der Änderung verstümmelt speichern Zeichen werden angezeigt.

 2. Codierung der Seitendeklaration: Im HTML-Code HEAD können Sie „meta http-equiv="Content-Type" content="text/html charset="XXX" /" verwenden (dieser Satz muss in „ Titel >>

  3. Datenbankverbindungskodierung: Bezieht sich darauf, welche Kodierung zum Übertragen von Daten an die Datenbank bei der Durchführung von Datenbankoperationen verwendet wird. Hierbei ist zu beachten, dass sie nicht mit der Kodierung der Datenbank selbst verwechselt werden sollte. Die Standardkodierung innerhalb von MySQL ist die LaTIn1-Kodierung, was bedeutet, dass MySQL Daten in der LaTIn1-Kodierung speichert und Daten, die in anderen Kodierungen an MySQL übertragen werden, in die Latin1-Kodierung konvertiert werden Ursache für verstümmelte Zeichen: Die oben genannten drei Kodierungseinstellungen sind inkonsistent. Da die meisten verschiedenen Kodierungen ASCII-kompatibel sind, werden keine englischen Symbole angezeigt, und es treten Probleme mit chinesischen Zeichen auf. Im Folgenden sind einige häufige Fehlersituationen aufgeführt Lösungen:

 1. Die Datenbank verwendet die UTF8-Kodierung und die Deklarationskodierung ist GB2312, was die häufigste Ursache für verstümmelte Zeichen ist. Zu diesem Zeitpunkt sind die im PHP-Skript direkt ausgewählten Daten verstümmelt. Sie müssen Folgendes verwenden:

mysql_query(”SET NAMES GBK“);
 或mysql_query(”SET NAMES GB2312“);
 , um die MYSQL-Verbindungskodierung vor der Abfrage festzulegen, um sicherzustellen, dass die Seite mit der hier festgelegten Verbindungskodierung übereinstimmt (GBK ist eine Erweiterung von GB2312). codiert, können Sie Folgendes verwenden:
mysql_query(”SET NAMES UTF8“);

 Beachten Sie, dass es sich um UTF8 anstelle des häufig verwendeten UTF-8 handelt, wenn die Seite die Codierung und Datenbank deklariert. Wenn die interne Codierung konsistent ist, müssen Sie die Verbindungscodierung nicht festlegen

Hinweis: Tatsächlich ist die Dateneingabe und -ausgabe von MYSQL komplizierter als oben erwähnt. In der MYSQL-Konfigurationsdatei my.ini sind zwei Standardcodierungen definiert, die sich in [client-character-set] und „default-“ befinden. Zeichensatz in [mysqld] legt jeweils die von der Clientverbindung und der Datenbank intern verwendete Codierung fest. Die oben angegebene Codierung ist tatsächlich der Befehlszeilenparameter, wenn der MYSQL-Client eine Verbindung zum Server herstellt, um dem MYSQL-Server mitzuteilen, welche Codierung Die empfangenen Client-Daten verwenden nicht die Standardcodierung

  2. Die Codierung der Seitendeklaration stimmt selten mit der Codierung der Datei selbst überein, denn wenn die Codierung inkonsistent ist, wird die Seite manchmal gerendert Sie sehen im Browser verstümmelte Zeichen. Meistens wird dies durch die Behebung kleinerer Fehler nach der Veröffentlichung, das Öffnen der Seite in der falschen Codierung und das anschließende Speichern verursacht. Oder Sie verwenden eine FTP-Software, um Dateien direkt online zu ändern, z. B. CuteFTP. Aufgrund einer falschen Software-Kodierungskonfiguration wird die falsche Kodierung konvertiert.

  3. Einige Freunde, die virtuelle Hosts mieten, haben immer noch verstümmelte Codes, obwohl die oben genannten drei Codierungen korrekt eingestellt sind. Wenn die Webseite beispielsweise in GB2312 kodiert ist, wird sie beim Öffnen von Browsern wie dem IE immer als UTF-8 erkannt. Der HEAD der Webseite hat bereits angegeben, dass es sich um GB2312 handelt, nachdem die Browserkodierung manuell auf GB2312 geändert wurde , die Seite wird normal angezeigt. Der Grund dafür ist, dass der Server-Apache die globale Standardkodierung des Servers festlegt und AddDefaultCharset UTF-8 in httpd.conf hinzufügt. Zu diesem Zeitpunkt sendet der Server zuerst den HTTP-Header und seine Priorität ist höher als die auf der Seite deklarierte Codierung. Natürlich erkennt der Browser ihn falsch. Es gibt zwei Lösungen. Administratoren sollten AddDefaultCharset GB2312 zur Konfigurationsdatei ihrer eigenen virtuellen Maschine hinzufügen, um die globale Konfiguration zu überschreiben, oder sie in .htaccess in ihrem eigenen Verzeichnis konfigurieren.

Das obige ist der detaillierte Inhalt vonWas tun, wenn PHP verstümmelte chinesische Zeichen aus der Datenbank liest?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn