ホームページ  >  記事  >  バックエンド開発  >  Apache PHPが文字化けした場合はどうすればよいですか?

Apache PHPが文字化けした場合はどうすればよいですか?

藏色散人
藏色散人オリジナル
2020-07-06 10:45:152403ブラウズ

Apache php の文字化けコードの解決策: まず、「php.ini」内のコードをコメント アウトし、次にホーム ディレクトリの言語を「AddDefaultCharset utf-8」に変更し、次に必要なフォルダーのエンコード方法を変更します。最後にApacheを再起動するだけです。

Apache PHPが文字化けした場合はどうすればよいですか?

#PHP 表示の文字化けと Apache の内部エンコードの問題の解決策

エンコードの問題

PHPのデフォルトエンコードはutf-8ですが、テスト中はhtmlコードのメタタグを書かない都合上、文字化けは発生しません

E:\OpenStudy\www\CSphp

そして私がダウンロードしたヘルプドキュメント 電子データの HTML バージョンには gb2312 の設定が必要です

E:\OpenStudy\www\Electronic Books

サーバーの設定を開始するとき、PHP は誰もが推奨する utf-8 エンコード方式を使用します

[php.ini]
default_charset = "UTF-8"

サーバー ルート ディレクトリ:

E:\OpenStudy\www

参照すべき関連情報

AddDefaultCharset 指令
说   明 当应答内容是text/plain或text/html时,在HTTP应答头中加入的默认字符集
语   法 AddDefaultCharset On|Off|charset
默认值 AddDefaultCharset Off
作用域 server config, virtual host, directory, .htaccess
覆盖项 FileInfo
状   态 核心(C)
模   块 core

応答コンテンツが text/plain または text/html である場合に限り、このコマンドはHTTP 応答ヘッダーのデフォルト値の文字セット。理論的には、これはドキュメント本文の e8e496c15ba93d81f6ea4fe5f55a2244 タグで指定された文字セットをオーバーライドしますが、実際の動作は通常、ユーザーのブラウザ設定によって異なります。 AddDefaultCharset Off は、この機能を無効にします。 AddDefaultCharset On は、Apache の内部デフォルト文字セット、iso-8859-1 を有効にします。 IANA 登録文字セット名の 1 つから別の文字セットを使用するように指定することもできます。例:

AddDefaultCharset utf-8

AddDefaultCharset は、次の状況でのみ使用してください。すべてのテキスト リソースが同じ特定の文字セットを使用しており、それらの文字セットを個別にマークするのは非常に面倒です。そのような例の 1 つは、動的コンテンツ (従来の CGI スクリプトなど) を含むリソースに文字セット パラメーターを追加することです。これは、ユーザーが指定したデータを出力に含めることにより、クロスサイト スクリプティング攻撃につながる可能性があります。ただし、注意してください: デフォルトの文字セットを設定するとブラウザの自動文字セット検出機能が無効になるため、より良い解決策はこれらのスクリプトを変更または削除することです。

AddCharset 指令
说明 在给定的文件扩展名与特定的字符集之间建立映射
语法 AddCharset charset extension [extension] ...
作用域 server config, virtual host, directory, .htaccess
覆盖项 FileInfo
状态 基本(B)
模块 mod_mime

AddCharset ディレクティブは、特定のファイル拡張子と特定の文字セットの間のマッピングを確立します。 charset は、拡張子に拡張子を付けたファイルの MIME 文字セット パラメータです。このマッピング関係は、既存のすべてのマッピング関係に強制的に追加され、既存のすべての拡張子拡張子マッピングが上書きされます。

AddLanguage ja .ja
AddCharset EUC-JP .euc
AddCharset ISO-2022-JP .jis
AddCharset SHIFT_JIS .sjis

上記の定義により、文書xxxx.ja.jisは文字セットISO-2022-JPを使用した日本語文書とみなされます(文書xxxx.jis.jaも同様)。 AddCharset ディレクティブは、ドキュメントを正しく翻訳して表示できるようにクライアントにドキュメントの文字セット エンコーディングを通知することに加えて、コンテンツ ネゴシエーション (ユーザーの設定情報に基づいてユーザーに返す複数のドキュメントの中から 1 つを選択する) にも使用されます。 )。

<Directory> 指令
说   明 封装一组指令,使之仅对文件空间中的某个目录及其子目录生效
语   法 <Directory directory-path> ... </Directory>
作用域 server config, virtual host
状   态 核心(C)
模   块 core

7b799fe73e35dcfdc019b13f54de80e5 と bb15ed4aadeed04b3991578461de0768 は、特定のディレクトリとそのサブディレクトリにのみ有効となるように一連の命令をカプセル化するために使用されます。 「ディレクトリ」スコープで使用できる任意のディレクティブを使用できます。 Directory-path には、ディレクトリへのフルパス、または Unix シェル一致構文を含むワイルドカード文字列を指定できます。ワイルドカード文字列では、「?」は任意の 1 文字に一致し、「*」は任意の文字のシーケンスに一致します。 「[]」を使用して文字範囲を決定することもできます。上記のワイルドカード文字はいずれも、「/」文字と一致することはできません。したがって、7c1008bdb607a11792067596d259a76e は /home/user/public_html と一致しませんが、40a4b63eece0e093aa00135ef0eac5fb は正しく一致します。例:

<Directory /usr/local/httpd/htdocs> 
  Options Indexes FollowSymLinks 
</Directory>

ディレクトリ パス パラメータを使用する場合は注意してください。これらのパラメータは、Apache がファイルにアクセスするために使用するファイル システム パスと一致している必要があります。特定の に割り当てられたディレクティブは、別のシンボリック リンクを通じて生成されたパスなど、別のパスによって指定された同じディレクトリ ファイルに対しては有効になりません。

解決策

1. php.ini のコードをコメントアウトします

[php.ini]
;default_charset = "UTF-8"

2. ホーム ディレクトリの言語を

AddDefaultCharset  utf-8
# # に変更します#必要なフォルダーのエンコード方法を変更します [E:/OpenStudy/www/Electronic Books]

<Directory "E:/OpenStudy/www/Electronic Books">
  AddDefaultCharset gb2312
</Directory>

変更が完了し、Apache を再起動すれば完了です

関連知識の詳細については、こちらをご覧ください。

PHP 中国語 Web サイト

にアクセスしてください。

以上がApache PHPが文字化けした場合はどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。