ホームページ >php教程 >PHP开发 >PHPページのエンコード宣言方法(ヘッダーまたはメタ)の詳細説明

PHPページのエンコード宣言方法(ヘッダーまたはメタ)の詳細説明

黄舟
黄舟オリジナル
2016-12-13 12:00:171171ブラウズ

php ヘッダー: PHP ページを utf エンコーディングまたは GBK エンコーディングとして定義します

php ページを utf エンコーディングとして定義します
header("Content-type: text/html; charset=utf-8");

php ページは gbk でエンコードされています
header("Content-type: text/html; charset=gb2312");

PHP ページは big5 でエンコードされます
header("Content-type: text/html; charset=big5");

通常、上記のコードは PHP ページのホームページに配置されます

PHP ページのエンコーディングを実装するためのヘッダーとメタの使用の違い
1. ページのエンコーディング

1. ラベル設定ページのエンコーディング

このタグの目的は、クライアントのブラウザがページを表示するために使用する文字セット エンコーディングを宣言することです。xxx は GB2312、GBK、UTF-8 です (MySQL とは異なります)。 UTF8)など。したがって、ほとんどのページはこのメソッドを使用して、このページを表示するときに使用するエンコーディングをブラウザーに指示し、エンコーディング エラーや文字化けを回避できます。でも時々そうします この文は、xxx の種類に関係なく、常に同じエンコーディングを使用することがわかりました。これについては後で説明します。

は HTML 情報に属し、サーバーが HTML 情報をブラウザーに渡したことを示す単なるステートメントであることに注意してください。

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

関数 header() は、括弧内の情報を http ヘッダーに送信します。

括弧内の内容が記事に記載されている通りであれば、基本的にはタグと比べてみると文字が似ていることがわかります。しかし、違うのは、この段落があるかどうかです。 この機能を使用すると、ブラウザは常に要求した xxx エンコードを使用し、従わないことはないため、この機能は非常に便利です。なぜそうなるのでしょうか?次に、HTTPS ヘッダーと HTML 情報の違いについて説明する必要があります。

https ヘッダーは、HTTP プロトコルを使用して HTML 情報をブラウザーに送信する前にサーバーによって送信される文字列です。

metaタグはhtml情報に属するため、header()で送信した内容が先にブラウザに届きますが、metaよりheader()の方が優先される点が人気です(あり得るかは分かりませんが)。 そんなことは言えません)。 header("content-type:text/html; charset=xxx") と の場合、ブラウザは以前の http ヘッダーのみを認識し、メタは認識しません。もちろん、この関数は PHP ページでのみ使用できます。

疑問も残ります。前者は確実に機能するのに、後者は機能しない場合があるのはなぜですか?これが、次に Apache について話したい理由です。

3. Apache ルートディレクトリの AddDefaultCharset

conf このフォルダーには、Apache 構成ドキュメント全体 httpd.conf があります。

テキストエディタで httpd.conf を開き、708 行目 (バージョンによって異なる場合があります) に AddDefaultCharset が含まれています xxx、xxx はエンコーディング名です。このコード行の意味: サーバー全体の Web ページ ファイルの https ヘッダーの文字セットをデフォルトの xxx 文字セットに設定します。この行があることは、各ファイルを与えることと同じです。 header("content-type:text/html; charset=xxx")。メタ設定が utf-8 であるにもかかわらず、ブラウザが常に gb2312 を使用する理由がわかりました。

header("content-type:text/html; charset=xxx") と指定すると、デフォルトの文字セットが設定した文字セットに変更されるため、この関数は常に役立ちます。 xxx の前に「#」を追加し、この文をコメントアウトし、ページにヘッダー (「content-type...」) が含まれていない場合は、メタ タグが有効になります。

まとめ:

整理しましょう

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

Web プログラマーの場合は、header("content-type:text/html; charset=xxx") を指定することで、どのサーバーでも正しく表示でき、移植性が高くなります。

文については、AddDefaultCharset xxx、注釈を付けるかどうかは意見の問題です。とりあえずコメントアウトしましたが、ページを書くときにサーバー上で正常に表示されるようにheader()も書く必要があります。

2. データベースのエンコーディング

データベースにクエリを実行する前に、PHP プログラムはまず mysql_query(“SET NAMES xxxx”); ここで、xxxx は Web ページのエンコーディング (charset=xxxx) である場合、Web ページに charset=utf8 が含まれています。 charset=gb2312、xxxx=gb2312 ほとんどすべての WEB プログラムには、データベースに接続するための共通のコードがあり、このファイルに次のコードを追加します。 mysql_query("set names") がうまくいきます。

SET NAMES クライアントから送信された SQL ステートメントで使用される文字セットを示します。したがって、SET NAMES 'utf-8' ステートメントは、サーバーに「このクライアントからの将来の情報では文字セット utf-8 が使用される」ことを伝えます。また、サーバーがクライアントに送り返す結果の文字セットも指定します。 (たとえば、 SELECT ステートメント。列​​の値に使用される文字セットを示します。 )

PHP ページのコーディングを統一する

MySQL データベースのコーディング、HTML ページのコーディング、PHP または HTML ファイル自体のコーディングはすべて一貫している必要があります。
1. MySQL データベースのエンコーディング: データベースの作成時にエンコーディングを指定します (gbk_chinese_ci など)。データ テーブル、フィールドの作成時、データの挿入時にエンコーディングを指定しないでください。データベースのエンコーディングが自動的に継承されます。
データベースに接続するときにもエンコーディングがあります。データベースに接続した後、
mysql_query('SET NAMES) を実行できます。 gbk');//gbk を utf8 などのエンコーディングに置き換えます。

2. HTML ページのエンコーディングは、次の行の設定を参照します:

3. PHP 銇俱仧銇

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