ホームページ > バックエンド開発 > PHPチュートリアル > PHPページのエンコード宣言方法(ヘッダーまたはメタ)の詳細解説_PHPチュートリアル

PHPページのエンコード宣言方法(ヘッダーまたはメタ)の詳細解説_PHPチュートリアル

WBOY
リリース: 2016-07-21 15:39:36
オリジナル
860 人が閲覧しました

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. タグはページのエンコーディングを設定します

このタグの機能は、クライアントのブラウザがページを表示するために使用する文字セット エンコーディングを GB2312 にできることを宣言することです。 、GBK、UTF-8 (MySQL とは異なります。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") と の両方を持つ PHP ページを追加します。ブラウザは以前の http ヘッダーのみを認識し、メタは認識しません。もちろん、この関数は PHP ページ内でのみ使用できます。

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


3. AddDefaultCharset
Apache ルート ディレクトリの conf フォルダーには、Apache 設定ドキュメント全体 httpd.conf があります。

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

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


概要:
並べ替えてみましょう

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

Web プログラマーの場合は、各ページにヘッダー ("content-type:text/html; charset=xxx") を追加して、どのサーバーでも正しく表示されるようにしてください。携帯性。

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


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

データベースにクエリを実行する前に、PHP プログラムはまず mysql_query("SET NAMES xxxx"); を実行します。ここで、xxxx は Web ページのエンコーディング (charset=xxxx の場合) です。 Web ページの場合、xxxx =utf8、Web ページの charset=gb2312 の場合、xxxx=gb2312 です。ほとんどすべての WEB プログラムには、データベースに接続するための共通のコードがあり、このファイルに mysql_query を追加するだけです。 (「セット名」) 。

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または HTML ファイル自体のエンコーディング: editplus を使用して php ファイルまたは HTML ファイルを開きます。データベースとページのエンコーディングが gbk の場合、ここでのエンコーディングは ansi です。 utf-8 の場合、ここでも utf-8 を選択します。

4. もう 1 つの注意点は、JavaScript または Flash で渡されるデータが utf-8 でエンコードされている場合、データベースとページのエンコードが gbk である場合は、トランスコードしてからデータベースに書き込む必要があることです。
iconv('utf-8', 'gbk', $content);

5. PHP プログラムでは、PHP ソース プログラムのエンコーディングを指定する行を追加できます:
header('Content-type: text /html ; 文字セット=gbk');

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

tru​​ehttp://www.bkjia.com/PHPjc/321531.html技術記事 PHP ヘッダーは、PHP ページを UTF エンコードまたは GBK エンコードとして定義します。 PHP page as UTF-encoded header("Content-type: text/html; charset=utf-8");タイプ: テキスト...
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート