php ヘッダーの文字化けの解決策: 1. ステートメント「header("Content-type: text/html; charset=utf-8");」を PHP ページに追加します; 2. META タグを使用して、ページのエンコーディングを設定する; 3. PHP ページのエンコーディングを統一します。
#php ヘッダーは、文字化けしたコードの問題とその他の文字化けしたコードの問題を解決します
推奨: "PHP チュートリアル 》
php ページを utf エンコードまたは GBK エンコードとして定義するための 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. 1dd9d9bc813bb1594796bd2b8615c022 タグを使用して、ページ エンコーディング This タグの機能は、クライアントのブラウザがページを表示するために使用する文字セット エンコーディングを宣言することです。xxx には、GB2312、GBK、UTF-8 (MySQL の UTF8 とは異なります)、等したがって、ほとんどのページはこのメソッドを使用して、このページを表示するときに使用するエンコーディングをブラウザーに指示し、エンコーディング エラーや文字化けを回避できます。しかし、時々、この文がまだ機能しないことがわかります。xxx がどれであっても、ブラウザは常に同じエンコーディングを使用します。この状況については後ほど説明します。 e8e496c15ba93d81f6ea4fe5f55a2244 は HTML 情報に属し、単なるステートメントであることに注意してください。サーバーが HTML 情報をブラウザーに渡したことを示すために機能します。 2. header("content-type:text/html; charset=xxx"); この関数 header() の機能は、括弧内の情報を http に送信することです。ヘッダ。 括弧内の内容が記事の通りであれば、基本的には3f2ae36b77c0b1762e465ca019e7bd30タグと同じ機能になりますが、最初のものと比べてみると文字が似ていることがわかります。 。ただし、違いは、この機能がある場合、ブラウザは常に要求された 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 を開きます。708 行目 (バージョンが異なる場合があります) には、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; charset=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; charset=gbk" />
3、PHP或html文件本身的编码:用editplus打开php文件或html文件,另存时,选择的编码,如果数据库和页面编码是gbk,则这儿的编码选择ansi;如果数据库和页面编码是utf-8,则这儿也选择utf-8。
4、另外要注意的是,Javascript或Flash中传递的数据是utf-8编码,如果数据库和页面编码是gbk,要进行转码,然后写入数据库。
iconv('utf-8', 'gbk', $content);
5、在PHP程序中,可以加上一行,来指定PHP源程序的编码:
header('Content-type: text/html; charset=gbk');
以上がPHPヘッダー文字化け問題の関連解決策まとめの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。