ホームページ バックエンド開発 PHPチュートリアル PHP はヘッダーとメタを使用してページエンコーディング宣言を実装します

PHP はヘッダーとメタを使用してページエンコーディング宣言を実装します

Dec 01, 2016 am 11:09 AM
header meta php

PHP では、ヘッダー メソッドを使用して PHP ページのページ エンコーディングを指定できます。具体的な方法は次のとおりです。

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. <META http-equiv =”content-type” content=”text/html”> タグを使用してページのエンコーディングを設定します

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

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

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

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

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

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

metaタグはhtml情報に属するため、header()で送信した内容が先にブラウザに届きますが、metaよりもheader()の方が優先される点が人気です(言えるかわかりませんが)。 PHP ページを追加すると、 header("content-type:text/html; charset=xxx") と <META http-equiv="content-type" content="text/html; charset=xxx"> の両方が含まれます。ブラウザは以前の 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ページにヘッダー("content-type: text/html; charset=xxx")がある場合、デフォルトの文字セットが設定した文字セットに変更されるので、この機能は常に便利です。 AddDefaultCharset xxx の前に「#」を追加し、この文をコメントアウトし、ページにヘッダー (「content-type...」) が含まれていない場合は、メタ タグが有効になります。

概要:

並べ替えてみましょう

header(“content-type: text/html; charset=xxx”)

AddDefaultCharset xxx

<META http-equiv=”content-type” content=”text/html; =xxx”>
Web プログラマーの場合は、各ページにヘッダー (「content-type: text/html; charset=xxx」) を追加して、どのサーバーでも正しく表示できるようにしてください。 。

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

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 ステートメントを使用する場合、列の値にどの文字セットが使用されているかが示されます。)

PHP ページのエンコーディングは統一されています

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

2. HTML ページのエンコーディングは、次の行の設定を参照します:
<meta http-equiv=”Content-Type” content=”text/html” />

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

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

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


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

ホットな記事タグ

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Dec 24, 2024 pm 04:42 PM

Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド

CakePHP の日付と時刻 CakePHP の日付と時刻 Sep 10, 2024 pm 05:27 PM

CakePHP の日付と時刻

CakePHP プロジェクトの構成 CakePHP プロジェクトの構成 Sep 10, 2024 pm 05:25 PM

CakePHP プロジェクトの構成

新しい手頃な価格の Meta Quest 3S VR ヘッドセットが FCC に登場、発売が近いことを示唆 新しい手頃な価格の Meta Quest 3S VR ヘッドセットが FCC に登場、発売が近いことを示唆 Sep 04, 2024 am 06:51 AM

新しい手頃な価格の Meta Quest 3S VR ヘッドセットが FCC に登場、発売が近いことを示唆

CakePHP ファイルのアップロード CakePHP ファイルのアップロード Sep 10, 2024 pm 05:27 PM

CakePHP ファイルのアップロード

CakePHP ルーティング CakePHP ルーティング Sep 10, 2024 pm 05:25 PM

CakePHP ルーティング

CakePHP について話し合う CakePHP について話し合う Sep 10, 2024 pm 05:28 PM

CakePHP について話し合う

CakePHP クイックガイド CakePHP クイックガイド Sep 10, 2024 pm 05:27 PM

CakePHP クイックガイド

See all articles