Apache および PHP Web ページのコーディングの問題の分析
Apache および PHP Web ページのコーディングについて話します。 MySQL 文字セットに関する記事もあります: http://potatows.eeie.cn/?p=39
Apache エンコードに関しては、3 つのことが関係します
header("content-type:text/html; charset=xxx") AddDefaultCharset
1. タグ
このタグには多くの機能があります。詳細については、ここをクリックしてください。
今日言いたいことは、まさに上記の形です。 について説明します。これは、この Web ページを宣言し、ブラウザでページ コンテンツ全体に xxx エンコーディングを使用させることを意味します。 GB2312、GBK、UTF-8 (UTF8 である MySQL とは異なります) などを指定できます。したがって、ほとんどのページはこのメソッドを使用して、このページを表示するときに使用するエンコーディングをブラウザーに指示し、エンコーディング エラーや文字化けを回避できます。しかし、場合によっては、この文がどの xxx であっても機能しないことがわかります。この状況については後ほど説明します。
は HTML 情報に属し、サーバーが HTML 情報をブラウザーに渡したことを示す単なるステートメントであることに注意してください。
関数 header() は、括弧内の情報を http ヘッダーに送信します。この機能の具体的な使い方については、ここをクリックしてください。
括弧内の内容が記事に記載されている通りであれば、基本的にはタグと比べてみると文字が似ていることがわかります。ただし、違いは、この機能がある場合、ブラウザは常に要求された xxx エンコーディングを使用し、決して従わないことです。そのため、この機能は非常に便利です。なぜそうなるのでしょうか?次に、HTTPS ヘッダーと HTML 情報の違いについて説明する必要があります。
引用:
https ヘッダーは、HTTP プロトコルを使用して HTML 情報をブラウザーに送信する前にサーバーによって送信される文字列です。
metaタグはhtml情報に属するため、header()で送信した内容が先にブラウザに届きますが、metaよりもheader()の方が優先される点が人気です(言っていいのかわかりませんが)。 header("content-type:text/html; charset=xxx") と の両方を持つ PHP ページを追加します。ブラウザは以前の http ヘッダーのみを認識し、メタは認識しません。もちろん、この関数は PHP ページ内でのみ使用できます。
また、前者は確実に機能するのに、後者は機能しないことがあるのはなぜでしょうか?という疑問も残ります。これが、次に Apache について話したい理由です。
Apache ルート ディレクトリの conf フォルダーには、Apache 設定ドキュメント全体 httpd.conf があります。 Apache の設定方法の詳細については、ここをクリックしてください ([url=thread-2674-1-1.html]windows[/url]、[url=thread-1381-1-1.html]linux[/url]) 。
httpd.conf をテキスト エディタで開きます (バージョンによって異なる場合があります) には、AddDefaultCharset xxx が含まれています。xxx はエンコーディング名です。このコード行の意味: サーバー全体の Web ページ ファイルの https ヘッダーの文字セットをデフォルトの xxx 文字セットに設定します。この行があることは、各ファイルにヘッダー ("content-type: text/html; charset=xxx") を追加することと同じです。これで、メタ設定が utf-8 であるにもかかわらず、ブラウザが常に gb2312 を使用する理由が理解できました。
Webページにヘッダー("content-type:text/html; charset=xxx")がある場合、デフォルトの文字セットが設定した文字セットに変更されるので、この機能は常に役に立ちます。 AddDefaultCharset xxx の前に「#」を追加し、この文をコメントアウトし、ページにヘッダー (「content-type...」) が含まれていない場合は、メタ タグが有効になります。
概要:
並べ替えてみましょう
AddDefaultCharset xxx
Web プログラマーの場合は、各ページにヘッダー ("content-type: text/html; charset=xxx") を追加して、どのサーバーでも正しく表示できるようにしてください。 強力な移植性。
AddDefaultCharset xxx という文に関しては、コメントするかどうかは意見の問題です。とりあえずコメントアウトしましたが、ページを書くときにheader()を書いて、別のサーバーでも正常に表示できるようにする必要があります。