Heim  >  Artikel  >  Backend-Entwicklung  >  Zusammenfassung verwandter Lösungen für das Problem mit verstümmelten PHP-Headern

Zusammenfassung verwandter Lösungen für das Problem mit verstümmelten PHP-Headern

藏色散人
藏色散人Original
2020-07-21 11:05:562587Durchsuche

Lösung für den verstümmelten PHP-Header: 1. Fügen Sie der PHP-Seite die Anweisung „header(“Content-type: text/html; charset=utf-8“);“ hinzu So legen Sie die Seitenkodierung fest: 3. Vereinheitlichen Sie die Kodierung von PHP-Seiten.

Zusammenfassung verwandter Lösungen für das Problem mit verstümmelten PHP-Headern

PHP-Header löst Probleme mit verstümmeltem Code und anderen Problemen mit verstümmeltem Code

Empfohlen: "PHP-Tutorial

PHP-Header zum Definieren einer PHP-Seite als UTF-Kodierung oder GBK-Kodierung

PHP-Seite als UTF-Kodierung

header("Content-type: text/html; charset=utf-8");

PHP-Seite als GBK-Kodierung

header("Content-type: text/html; charset=gb2312");

Die PHP-Seite ist Big5-codiert

header("Content-type: text/html; charset=big5");

Normalerweise wird der obige Code auf der Homepage der PHP-Seite platziert

Der Unterschied zwischen der Verwendung von Header oder Meta zur Implementierung der PHP-Seitencodierung

1. Seitenkodierung

1. Verwenden Sie zum Festlegen das Tag 1dd9d9bc813bb1594796bd2b8615c022 die Seitenkodierung

diese Die Funktion des Tags besteht darin, anzugeben, welche Zeichensatzkodierung der Browser des Clients zum Anzeigen der Seite verwendet. xxx kann GB2312, GBK, UTF-8 sein (anders als MySQL, das UTF8 ist). , usw. Daher können die meisten Seiten diese Methode verwenden, um dem Browser mitzuteilen, welche Codierung beim Anzeigen dieser Seite verwendet werden soll, um Codierungsfehler und verstümmelte Zeichen zu vermeiden. Aber manchmal werden wir feststellen, dass dieser Satz immer noch nicht funktioniert, egal welcher xxx ist, der Browser verwendet immer die gleiche Codierung, darüber werde ich später sprechen.

Bitte beachten Sie, dass e8e496c15ba93d81f6ea4fe5f55a2244 zu HTML-Informationen gehört und nur eine Anweisung ist. Es zeigt an, dass der Server die HTML-Informationen an den Browser übergeben hat.

2. header("content-type:text/html; charset=xxx");

Die Funktion dieser Funktion header() besteht darin, die Informationen in den Klammern an den http zu senden Kopfzeile.

Wenn der Inhalt in den Klammern dem im Artikel genannten entspricht, ist die Funktion grundsätzlich dieselbe wie beim 3f2ae36b77c0b1762e465ca019e7bd30-Tag. Wenn Sie es mit dem ersten vergleichen, werden Sie feststellen, dass die Zeichen ähnlich sind . Der Unterschied besteht jedoch darin, dass der Browser bei Vorhandensein dieser Funktion immer die von Ihnen angeforderte XXX-Kodierung verwendet und niemals ungehorsam ist. Daher ist diese Funktion sehr nützlich. Warum passiert das? Dann müssen wir über den Unterschied zwischen HTTPS-Header und HTML-Informationen sprechen:

Der https-Header ist eine Zeichenfolge, die vom Server gesendet wird, bevor HTML-Informationen mithilfe des HTTP-Protokolls an den Browser gesendet werden.

Da das Meta-Tag zu HTML-Informationen gehört, erreicht der von header() gesendete Inhalt zuerst den Browser. Der beliebte Punkt ist, dass header() eine höhere Priorität als Meta hat (ich weiß nicht, ob das möglich ist). gesagt werden). Fügen Sie eine PHP-Seite hinzu, die sowohl header("content-type:text/html; charset=xxx") als auch 1dd9d9bc813bb1594796bd2b8615c022 enthält. Der Browser erkennt nur den früheren http-Header und nicht das Meta. Natürlich kann diese Funktion nur innerhalb von PHP-Seiten verwendet werden.

Es stellt sich auch die Frage, warum Ersteres definitiv funktioniert, Letzteres jedoch manchmal nicht? Aus diesem Grund wollen wir als nächstes über Apache sprechen.

3. AddDefaultCharset

Im conf-Ordner im Apache-Stammverzeichnis befindet sich das gesamte Apache-Konfigurationsdokument httpd.conf.

Öffnen Sie httpd.conf mit einem Texteditor. Zeile 708 (verschiedene Versionen können unterschiedlich sein) enthält AddDefaultCharset xxx, wobei xxx der Codierungsname ist. Die Bedeutung dieser Codezeile: Stellen Sie den Zeichensatz im https-Header der Webseitendatei auf dem gesamten Server auf Ihren Standard-xxx-Zeichensatz ein. Das Vorhandensein dieser Zeile entspricht dem Hinzufügen eines Headers („content-type: text/html; charset=xxx“) zu jeder Datei. Jetzt können Sie verstehen, warum der Browser immer gb2312 verwendet, obwohl die Meta-Einstellung utf-8 ist.

Wenn die Webseite einen Header („content-type:text/html; charset=xxx“) enthält, wird der Standardzeichensatz in den von Ihnen festgelegten Zeichensatz geändert, sodass diese Funktion immer funktioniert nützlich sein. Wenn Sie vor AddDefaultCharset xxx ein „#“ hinzufügen, diesen Satz auskommentieren und die Seite keinen Header („content-type...“) enthält, ist das Meta-Tag an der Reihe, wirksam zu werden.

Zusammenfassung:

Lassen Sie uns sortieren

header("content-type:text/html; charset=xxx") 
AddDefaultCharset xxx 
<META http-equiv="content-type" content="text/html; charset=xxx">

Wenn Sie ein Webprogrammierer sind, fügen Sie einen Header hinzu („content-type: text/html; charset=xxx“), um sicherzustellen dass es auf jedem Server korrekt angezeigt werden kann und eine starke Portabilität aufweist.

Was den Satz AddDefaultCharset xxx betrifft, ist es Ansichtssache, ob er kommentiert werden soll oder nicht. Wie auch immer, ich habe es auskommentiert, aber ich muss beim Schreiben einer Seite auch header () schreiben, damit sie normal auf dem Server angezeigt werden kann.

2. Datenbankkodierung

Vor der Abfrage der Datenbank führt das PHP-Programm zunächst mysql_query("SET NAMES xxxx"); aus, wobei xxxx die Kodierung Ihrer Webseite ist (charset= xxxx), wenn charset=utf8 auf der Webseite, dann xxxx=utf8, wenn charset=gb2312 auf der Webseite, dann xxxx=gb2312, fast alle WEB-Programme haben einen gemeinsamen Code, um eine Verbindung zur Datenbank herzustellen In einer Datei abgelegt. Fügen Sie hier einfach mysql_query("Namen festlegen") hinzu.

SET NAMES 显示客户端发送的 SQL 语句中使用什么字符集。因此,SET NAMES 'utf-8'语句告诉服务器“将来从这个客户端传来的信息采用字符集utf-8”。它还为服务器发送回客户端的结果指定了字符集。(例如,如果你使用一 个SELECT语句,它表示列值使用了什么字符集。) 

PHP页面编码统一 

MySQL数据库编码、html页面编码、PHP或html文件本身编码要全部一致。 

  1、MySQL数据库编码:建立数据库时指定编码(如gbk_chinese_ci),建立数据表、建立字段、插入数据时不要指定编码,会自动继承数据库的编码。 

数据库连接时,也有编码,可以在连接完数据库后,执行 

mysql_query(&#39;SET NAMES gbk&#39;);//将gbk换成你的编码,如utf8。

  2、html页面的编码,指的是这一行的设置: 

<meta http-equiv="Content-Type" content="text/html; charset=gbk" />

  3、PHP或html文件本身的编码:用editplus打开php文件或html文件,另存时,选择的编码,如果数据库和页面编码是gbk,则这儿的编码选择ansi;如果数据库和页面编码是utf-8,则这儿也选择utf-8。 

  4、另外要注意的是,Javascript或Flash中传递的数据是utf-8编码,如果数据库和页面编码是gbk,要进行转码,然后写入数据库。 

iconv(&#39;utf-8&#39;, &#39;gbk&#39;, $content);

5、在PHP程序中,可以加上一行,来指定PHP源程序的编码: 

header(&#39;Content-type: text/html; charset=gbk&#39;);

Das obige ist der detaillierte Inhalt vonZusammenfassung verwandter Lösungen für das Problem mit verstümmelten PHP-Headern. 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