ホームページ  >  記事  >  バックエンド開発  >  ページ文字化け問題の根本原因とその分析_PHP チュートリアル

ページ文字化け問題の根本原因とその分析_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-21 14:59:48789ブラウズ

まず、PHP設定ファイルphp.ini:
1のdefault_charsetをオフにします。ページはcharsetを指定せず、Apacheはdefaultcharst gbkを設定し、ページファイルのエンコーディングはutf-8です
結果:文字化け、 Wireshark を使用してパケットをキャプチャし、サーバーを検出します。 返されたヘッダーは次のように指定します。

コードをコピーします。 コードは次のとおりです。
Content-Type: text/html;charset=GB


結論:ページでは文字セットが指定されていません。Apache のデフォルト文字セットは機能します

2. ページで指定された文字セットは utf-8 で、Apache はデフォルト文字セット gbk を設定します


コードをコピーします コードは次のとおりです:




< /body>



結果はやはり文字化けです。
結論: Apache が DefaultCharset で構成されている場合、ページの charset 宣言は無視されます。

3. PHPヘッダーはcharsetがutf8であることを宣言し、Apacheはdefaultcharst gbkを設定し、ページファイルのエンコーディングがutf8であることを宣言します


コードをコピーします

コードは次のとおりです:header("Content-Type: text/html; charset=utf -8");
結果: ページは正常に表示されます。

4 Apache は DefaultCharset をオフに設定します
その結果、ページは正常に表示されます。


Apache2マニュアルを読んでください:

AddDefaultCharsetディレクティブ応答コンテンツがtext/plainまたはtext/htmlの場合にHTTP応答ヘッダーに追加されるデフォルトの文字セットについて説明します
構文AddDefaultCharsetOn|Off|charset
デフォルト値AddDefaultCharsetOff
スコープserverconfig, virtualhost,directory,.htaccess
Override item FileInfo
State core (C)
Module core
応答コンテンツが text/plain または text/html の場合に限り、このディレクティブは HTTP 応答ヘッダーに含まれます
デフォルト文字セットが追加されました。理論的には、これはドキュメント本文の タグで指定された文字セットをオーバーライドしますが、実際の動作は通常、ユーザーのブラウザ設定によって異なります。 AddDefaultCharsetOff はこの機能を無効にします。
AddDefaultCharsetOn は、Apache 内のデフォルトの文字セット、iso-8859-1 を有効にします。 IANA に登録されている文字セット名のうち、別の文字セットを使用するように指定することもできます。

例:

AddDefaultCharsetutf-8

言い換えれば、Apache がdefaultcharset を指定しない場合、ページのエンコーディングはページ独自のメタタグによって指定されます。
Apache で指定されている場合、ページ内のメタ タグで指定されたエンコードは無視されますが、スクリプトはヘッダーをクライアントに直接エンコードできます
最後に、まだ解決されていない問題があります。
Apache もページも時間が指定されていない場合、どうなるのでしょうか?

私は自分のマシンを使用しています。何も指定しない場合、デフォルトは依然として utf8 です。




http://www.bkjia.com/PHPjc/328117.html

www.bkjia.com

tru​​e

http://www.bkjia.com/PHPjc/328117.html技術記事まず、PHP 設定ファイル php.ini のdefault_charset をオフにします。 1. ページでは charset が指定されておらず、Apache はdefaultcharst gbk を設定し、ページ ファイルのエンコーディングは utf-8 です。 結果: 文字化けします。wiresh を使用します...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
前の記事:FireFox プラグインを使用して PHP をデバッグする方法 FirePHP_PHP チュートリアル次の記事:FireFox プラグインを使用して PHP をデバッグする方法 FirePHP_PHP チュートリアル

関連記事

続きを見る