Heim  >  Artikel  >  Backend-Entwicklung  >  So lösen Sie das Problem verstümmelter chinesischer Schriftzeichen in PHP

So lösen Sie das Problem verstümmelter chinesischer Schriftzeichen in PHP

藏色散人
藏色散人Original
2020-07-11 09:11:043157Durchsuche

Lösung für verstümmelte chinesische Zeichen in PHP: 1. Ändern Sie die MySQL-Konfigurationsdatei „my.ini“ oder „my.cnf“. 2. Fügen Sie die Anweisung „mysql_query(“set“ vor dem benötigten PHP-Programm hinzu zum Ausführen von Datenbankoperationen namens 'encoding'");" 3. Stellen Sie die Serverkodierung auf „UTF-8“ ein.

So lösen Sie das Problem verstümmelter chinesischer Schriftzeichen in PHP

Analyse der Ursachen und Lösungen für verstümmelte chinesische PHP-Zeichen

Codierung von PHP-Webseiten

1. Wenn Sie die GB2312-Codierung verwenden möchten, sollte PHP den Header ausgeben: header("Content-type:text/html;charset=gb2312");, fügen Sie eine statische Seite hinzu, das Codierungsformat aller Dateien ist ANSI, Sie können es mit Notepad öffnen und als Auswahl in ANSI codiert speichern, wobei die Quelldatei überschrieben wird.

2. Wenn Sie die UTF-8-Codierung verwenden möchten, sollte PHP den Header ausgeben: header("Content-type:text/html;charset=utf-8");, statische Seite hinzufügen und Alle Dateien kodieren. Das Format ist utf-8. Das Speichern als UTF-8 kann etwas mühsam sein. Wenn Sie Session verwenden, können Sie Editplus zum Speichern verwenden. Parameterauswahl->Datei-> UTF-8-Signatur, wählen Sie Immer löschen und speichern Sie dann, um die Stücklisteninformationen zu entfernen.

3.php selbst ist kein Unicode, alle substr und andere Funktionen müssen in mb_substr geändert werden (die mbstring-Erweiterung muss installiert sein); oder verwenden Sie iconv zum Transkodieren.

Dateninteraktion zwischen PHP und MySQL

Die Codierung von PHP und Datenbank sollte konsistent sein

1 Ändern Sie die MySQL-Konfigurationsdatei my.ini oder my.cnf, MySQL ist Am besten verwenden Sie utf -8 Encoding

[mysql]  
default-character-set=utf8 
[mysqld]  
default-character-set=utf8 
default-storage-engine=MyISAM 
在[mysqld]下加入:  
default-collation=utf8_bin 
init_connect='SET NAMES utf8'

2. Fügen Sie mysql_query("set name's 'encoding'"); vor dem PHP-Programm hinzu, das mit der PHP-Codierung übereinstimmt Die PHP-Codierung ist gb2312, dann ist die MySQL-Codierung gb2312. Wenn es utf-8 ist, dann ist die MySQL-Codierung utf8, sodass beim Einfügen oder Abrufen von Daten keine verstümmelten chinesischen PHP-Zeichen auftreten.

Über die Kodierung

1. Zeichensatz:

Die unten im Computer gespeicherten Daten sind allesamt Binärdaten. Wenn Sie wirklich aussagekräftige Zeichen erhalten möchten, müssen Sie dies tun Lassen Sie die Binärdaten jedem Zeichen entsprechen, und diese Entsprechung bildet eine Codierungstabelle.

Häufig verwendete Zeichensätze:

ISO-8859-1 lateinische Codetabelle Latein, die westeuropäische Sprachen darstellt und ein Byte oder 8 Bit zur Darstellung von Daten verwendet.

GB2312 Vereinfachte chinesische Codetabelle. Enthält 6000-7000 chinesische Schriftzeichen und Symbole. Dargestellt durch zwei Bytes. Beide Bytes beginnen mit 1 und sind beide negative Zahlen.

GBK ist derzeit mit 20.000 chinesischen Schriftzeichen und Symbolen die am häufigsten verwendete chinesische Codetabelle. Verwenden Sie zwei Bytes zur Darstellung von Daten.

Der internationale Unicode-Standardcode wird, egal um welchen Text es sich handelt, in zwei Bytes gespeichert.

UTF-8 basiert auf Unicode. Daten können in einem Byte statt in zwei Bytes gespeichert werden. Darüber hinaus ist diese Codetabelle stärker standardisiert und jedem Byte-Header werden Codierungsinformationen hinzugefügt.

(Linux verwendet standardmäßig ISO-8859-1, Win32 verwendet standardmäßig GB2312)

2. Kodierung und Dekodierung

Kodierung: Konvertieren Sie Zeichen in entsprechende Zeichen im Zeichen Kodierung festlegen

Dekodierung: Finden Sie das Zeichen, das der Kodierung im Zeichensatz entspricht

Übertragungsprozess von Chinesisch im Netzwerk

1. Am Beispiel von Java verwendet Eclipse UTF: Standardmäßig ist die Kodierung 8 festgelegt, der Tomcat-Server verwendet standardmäßig die Kodierung ISO-8859-1 und Browser verwenden im Allgemeinen standardmäßig die Kodierung GBK.

Zeichen werden zwischen dem Programm und dem Server übertragen, und Bytes werden zwischen dem Server und dem Browser übertragen.

2. Chinesischer Übertragungsvorgang:

Chinesische Zeichen im Browser -----> -->Programm;

Chinesische Zeichen im Programm----->Server----->Dekodierung----->Browser---- ->Kodierung für Anzeige

3. Gründe für verstümmelte Zeichen und Lösungen:

(1) Chinesische Zeichen werden im Browser in GBK codiert und in Byte-Streams an den Server übertragen ISO-8859-1 und übermittelt es in Form von Zeichen an das Programm.

Da der ISO-8859-1-Kodierungssatz keine chinesischen Zeichen unterstützt, sind alle dekodierten Zeichen westeuropäische Zeichen. Die Übertragung dieser Zeichen an das Programm führt zu verstümmelten Zeichen. Stellen Sie einfach die Codierung des Servers auf UTF-8 ein:

request.setCharacterEncoding("UTF-8");

Aber diese Methode kann nur für die POST-Anforderungsmethode verwendet werden, da sich die Einstellung nur auf den Inhalt im Anforderungstext auswirkt, wenn es sich um eine GET-Anforderungsmethode handelt. Sie können die Methode des Dekodierens und anschließenden Kodierens verwenden:

byte[] buffer = request.getParameter("word").getBytes("ISO-8859-1");  //进行编码
String newStr = new String(buffer,"UTF-8");  //进行解码

(2) Die chinesischen Zeichen im Programm werden so wie sie sind an den Server übertragen. Der Server muss die chinesischen Zeichen zuerst kodieren und dann übertragen an den Browser, aber aufgrund von ISO-8859-1 Der Kodierungssatz unterstützt keine chinesischen Zeichen, sodass die entsprechende Kodierung nicht im Zeichensatz gefunden werden kann. Nach der Kodierung wird es zu einem Fragezeichen, das an den Browser übertragen und angezeigt wird ;

In diesem Fall muss es zweimal gemacht werden. Einstellungen:

response.setCharacterEncoding("UTF-8");//将服务器编码集设置为UTF-8
response.setContentType("text/html;charset=UTF-8"); //将浏览器编码集设置为UTF-8

Tatsächlich enthält die zweite Einstellungszeile bereits die Einstellungen für den Server, sodass Sie normalerweise nur die eingeben müssen zweiter Satz des Codes.

Weitere Informationen zu diesem Thema finden Sie auf der

PHP-Website für Chinesisch

!

Das obige ist der detaillierte Inhalt vonSo lösen Sie das Problem verstümmelter chinesischer Schriftzeichen in PHP. 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