PHPページのさまざまなエンコード設定_PHPチュートリアル

WBOY
リリース: 2016-07-13 10:30:24
オリジナル
880 人が閲覧しました

PHP の header() 関数は、PHP ページのエンコーディングを定義するために使用されます (注: 前に出力を置くことはできません。そうしないと、エラーが報告されます)

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

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

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

1. ページのエンコード

1. タグを使用してページエンコーディングを設定します

このタグの目的は、クライアントのブラウザがページを表示するために使用する文字セットエンコーディングを宣言することです。xxx には、GB2312、GBK、UTF-8 (MySQL とは異なります。UTF8) などを指定できます。したがって、ほとんどのページはこのメソッドを使用して、このページを表示するときに使用するエンコーディングをブラウザーに指示し、エンコーディング エラーや文字化けを回避できます。しかし、場合によっては、この文がどの xxx であっても機能しないことがわかります。この状況については後ほど説明します。

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

2. header("content-type:text/html; charset=UTF-8") 関数を使用してページのエンコーディングを設定します

この関数 header() の機能は、括弧内の情報を http ヘッダーに送信することです。

カッコ内の内容が記事に記載されている通りであれば、基本的にはラベルと同じ機能であることが分かります。ただし、違いは、この機能がある場合、ブラウザは常に要求された xxx エンコーディングを使用し、決して従わないことです。そのため、この機能は非常に便利です。

これはなぜでしょうか? 次に、HTTPS ヘッダーと HTML 情報の違いについて話さなければなりません:

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

metaタグはhtml情報に属するため、header()で送信した内容が最初にブラウザに届きますが、metaよりもheader()の方が優先されるのが人気のポイントです。 header("content-type:text/html; charset=xxx") と header("content-type:text/html; charset=xxx") の両方を持つ PHP ページを追加すると、ブラウザは前の http ヘッダーのみを認識します。メタではありません。もちろん、この関数は PHP ページ内でのみ使用できます。

単一のスペースであっても前に出力を置くことはできません。そうしないと、エラーが報告されます:

警告: ヘッダー情報は変更できません - ヘッダーは既に C:wampwwwtest.php の 3 行目 (C:wampwwwtest.php:2 で開始された出力) によって送信されています

2. データベースのエンコード

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

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

3. 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; charset=gbk');

4. コード化された文字の大文字と小文字の違い

(mysqlのみ、その他の場所では大文字のUTF-8、GBK、GB2312を使用することをお勧めします)

「utf-8」のエイリアス「utf8」はMySQL内でのみ使用できますが、それ以外の場所では必ず大文字の「UTF-8」を使用してください。具体的には、コマンド「mysql_query(set names utf8)」の外側では常に大文字の「UTF-8」を使用してください。

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/765942.html技術記事 php の header() 関数は、php ページのエンコーディングを定義するために使用されます (注: 前に出力を置くことはできません。そうしないとエラーが報告されます)。php ページは utf8 でエンコードされます。 header(Content-type: text/ html; 文字セット=UTF-8...
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート