ホームページ >バックエンド開発 >PHPの問題 >PHPのWebページが文字化けするのはなぜですか?

PHPのWebページが文字化けするのはなぜですか?

青灯夜游
青灯夜游オリジナル
2021-11-10 18:41:516095ブラウズ

PHP Web ページが文字化けする理由: 1. Web ページのエンコード (文字セット) が正しく設定されていないため、ブラウザは間違ったエンコードで解析します。2. PHP ファイルが間違ったエンコードで開かれ、保存されます。エンコーディング。

PHPのWebページが文字化けするのはなぜですか?

このチュートリアルの動作環境: Windows7 システム、PHP7.1 バージョン、DELL G3 コンピューター

PHP は実際に書いたコードでは、ページの文字化けなどの問題が頻繁に発生します。次に、PHPページが文字化けする原因とその解決策について詳しく紹介します。

一般的に、PHP ページで文字化けが発生する原因は 2 つあります。

  • 間違ったエンコード (文字セット) 設定が原因、ブラウザー 解析に間違ったエンコーディングが使用され、画面が乱雑な「Book of Heaven」でいっぱいになります。

  • ファイルは間違ったエンコーディングで開かれ、保存されます。たとえば、テキスト ファイルは元々 GB2312 でエンコードされていましたが、UTF-8 エンコードで開いて保存しました。

上記の PHP ページの文字化けの問題を解決するには、まず開発のどの側面にエンコーディングが関係しているかを知る必要があります。

  • ページ宣言のエンコーディング: HTML コード HEAD は、Web ページが使用するエンコーディングをブラウザーに伝えるために使用できます。現在、XXX は中国の Web サイト開発で主に GB2312 と UTF-8 を使用しています。

  • データベース接続エンコーディング: データベース操作の実行時にデータベースにデータを送信するために使用されるエンコーディングを指します。データベースのエンコーディングと混同しないように注意してください。たとえば、MySQL の内部デフォルトは latin1 エンコーディングです、つまり、Mysql はデータを latin1 エンコーディングで保存し、他のエンコーディングで Mysql に送信されたデータは latin1 エンコーディングに変換されます。

WEB 開発のどこにコーディングが関係しているかを知ると、PHP ページが文字化けする理由もわかります。さまざまなコーディングのほとんどが ASCII 互換であるため、上記のコーディング設定は一貫性がありません。英語の記号は表示されず、中国語はうまくいきません。

次に、一般的なエラー状況と解決策を示します:

1. データベースは UTF8 エンコーディングを使用し、ページ宣言エンコーディングは GB2312 です。これは文字化けの最も一般的な原因です。このとき、PHP スクリプト内で直接 SELECT データを実行すると、PHP ページが文字化けします。

mysql_query("SET NAMES GBK"); を使用して、 MYSQL 接続エンコーディングをクエリする前に、ページ宣言エンコーディングがここで設定した接続エンコーディングと一致していることを確認してください (GBK は GB2312 の拡張です)。ページが UTF-8 でエンコードされている場合は、次を使用できます:

mysql_query("SET NAMES UTF8"); 一般的に使用される UTF-8 ではなく、UTF8 であることに注意してください。ページ宣言のエンコーディングがデータベースの内部エンコーディングと一致している場合は、接続エンコーディングを設定する必要はありません。

注: 実際には、MYSQL のデータ入出力は上記よりも複雑です。MYSQL 設定ファイル my.ini には 2 つのデフォルトのエンコーディングが定義されています。 [client] および [mysqld] のデフォルト文字セットは、デフォルトのクライアント接続と内部データベースで使用されるエンコーディングを設定するために使用されます。上記で指定したエンコーディングは、実際には、MYSQL クライアントがサーバーに接続するときのコマンド ライン パラメーターcharacter_set_client であり、デフォルトのエンコーディングを使用する代わりに、受信したクライアント データのエンコーディングを MYSQL サーバーに伝えます。

2. ページ宣言のエンコーディングがファイル自体のエンコーディングと一致していません。エンコーディングが一致しないと、アーティストがページを作成するときにブラウザに表示される内容が文字化けしてしまうため、これはめったに起こりません。多くの場合、リリース後にいくつかの軽微なバグを修正し、間違ったエンコーディングでページを開いて保存することが原因で発生します。または、CuteFTP などの FTP ソフトウェアを使用してオンラインでファイルを直接変更すると、ソフトウェアのエンコード設定が正しくないため、間違ったエンコードが変換されます。

推奨学習: 「PHP ビデオ チュートリアル

以上がPHPのWebページが文字化けするのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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