Verstümmelte chinesische PHP-Zeichen sind eines der häufigsten Probleme bei der PHP-Entwicklung. Verstümmelte PHP-Chinesischzeichen treten manchmal auf der Webseite selbst auf, einige treten im Prozess der MySQL-Interaktion auf und manchmal hängen sie mit dem Betriebssystem zusammen. Hier ist eine Zusammenfassung.
1. Die erste ist die Kodierung der PHP-Webseite
1. Die Kodierung der PHP-Datei selbst und die Kodierung der Webseite sollten übereinstimmen
a. Dann sollte PHP den Header ausgeben: header("Content- Type: text/html; charset=gb2312"), add Um dem Browser mitzuteilen, welche Codierung für die Webseite verwendet wird, verwendet XXX derzeit hauptsächlich GB2312 und UTF-8 bei der Entwicklung chinesischer Websites.
3. Datenbankverbindungskodierung: Bezieht sich auf die Kodierung, die 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 interner Standard von MySQL
Es handelt sich um eine Latin1-Codierung, was bedeutet, dass MySQL Daten in Latin1-Codierung speichert und Daten, die in anderen Codierungen an MySQL übertragen werden, in Latin1-Codierung konvertiert werden.
Wenn Sie wissen, wo die Codierung bei der WEB-Entwicklung eine Rolle spielt, kennen Sie auch die Ursache für verstümmelte Zeichen: Die oben genannten drei Codierungseinstellungen sind inkonsistent. Da die meisten der verschiedenen Codierungen ASCII-kompatibel sind, werden chinesische Symbole nicht angezeigt.
5. Bekämpfen Sie einige häufige Fehlersituationen und Lösungen:
1. Die Datenbank verwendet UTF8-Kodierung und die Seitendeklarationskodierung ist GB2312
, was die häufigste Ursache für verstümmelte Zeichen ist. Zu diesem Zeitpunkt werden die direkten SELECT-Daten im PHP-Skript verstümmelt. Sie müssen sie vor der Abfrage verwenden: mysql_query("SET
NAMES GBK"); um die MYSQL-Verbindungskodierung festzulegen und sicherzustellen, dass die Seitendeklarationskodierung mit der hier festgelegten Verbindungskodierung übereinstimmt (GBK ist eine Erweiterung von GB2312
). Wenn die Seite UTF-8-codiert ist, 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 Kodierung der Seitendeklaration mit der internen Kodierung der Datenbank übereinstimmt, müssen Sie die Verbindungskodierung 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] befinden. Standardzeichensatz und Standardzeichensatz in [mysqld] Zum Festlegen der standardmäßig verwendeten Codierung für Clientverbindungen bzw. interne Datenbanken. Die oben angegebene Codierung ist eigentlich der Befehlszeilenparameter, wenn der MYSQL-Client eine Verbindung zum Server herstellt. Character_set_client, um dem MYSQL-Server mitzuteilen, welche Codierung die empfangenen Client-Daten haben, anstatt die Standardcodierung zu verwenden.
2. Die Kodierung der Seitendeklaration stimmt nicht mit der Kodierung der Datei selbst überein. Dies kommt selten vor, da der Künstler beim Erstellen der Seite verstümmelte Zeichen sieht. In den meisten Fällen wird es nach der Veröffentlichung geändert. Einige kleinere Fehler werden durch 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. Code.
3. Einige Freunde, die virtuelle Hosts mieten, haben trotz der korrekten Einstellung der oben genannten drei Codierungen immer noch verstümmelte Zeichen. Die Webseite lautet beispielsweise GB2312 Codiert, IE und andere Browser erkennen es beim Öffnen immer als UTF-8. Die Seite HEAD hat angegeben, dass es sich um GB2312 handelt. Ändern Sie die Browser-Codierung manuell auf GB2312. Die folgende Seite wird normal angezeigt. Der Grund dafür ist, dass der Server-Apache die globale Standardkodierung des Servers festlegt und AddDefaultCharset in httpd.conf hinzufügt. UTF-8 . 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, die Administratoren zur Konfigurationsdatei ihrer eigenen virtuellen Maschinen hinzufügen sollten. Fügen Sie DefaultCharset GB2312 hinzu, um die globale Konfiguration zu überschreiben, oder konfigurieren Sie sie in .htaccess in Ihrem eigenen Verzeichnis.
Zusammenfassung: Kurz gesagt, der beste und schnellste Weg, den chinesischen verstümmelten Code in PHP zu lösen, besteht darin, die von der Seite deklarierte Codierung mit der internen Codierung der Datenbank in Einklang zu bringen Die Seite stimmt nicht mit der internen Codierung der Datenbank überein , legen Sie einfach die Verbindungskodierung fest, mysql_query("SET NAMES XXX"); Dies wird das Problem der verstümmelten Zeichen definitiv lösen
Das Obige hat eine Zusammenfassung gängiger Lösungen für verstümmelte chinesische Zeichen in PHP vorgestellt, einschließlich relevanter Inhalte. Ich hoffe, dass es für Freunde hilfreich sein wird, die an PHP-Tutorials interessiert sind.