ホームページ  >  記事  >  バックエンド開発  >  PHP および MySQL 開発におけるページ文字化けコードの生成と解決_PHP チュートリアル

PHP および MySQL 開発におけるページ文字化けコードの生成と解決_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-21 15:53:01762ブラウズ

1. ファイルエンコーディング: ページファイル (.html、.php など) 自体が保存されるエンコーディングを指します。 Notepad と Dreamweaver では、ページを開くときにファイルのエンコーディングが自動的に認識されるため、問題は少なくなります。ただし、ZendStudio はエンコーディングを自動的に認識しません。作業中に誤って間違ったエンコーディングでファイルを開き、変更を行った後にファイルを保存すると、文字化けしてしまいます。の文字が出てきます(しみじみ)。

2. ページ宣言のエンコーディング: HTML コード HEAD で、 を使用して、 Web ページはどのようなエンコーディングを使用しますか? 現在、XXX は中国の Web サイト開発で主に GB2312 と UTF-8 を使用しています。たとえば、MySQL のデフォルトのエンコーディングは latin1 エンコーディングです。これは、Mysql に送信されるデータは latin1 エンコーディングで保存されることを意味します。 latin1 エンコーディングに変換されます。

エンコーディングが関係する場合、コードが文字化けする理由がわかります。さまざまなエンコーディングのほとんどは ASCII と互換性があるため、英語の記号は表示されません。中国語の文字は不運です。一般的なエラーの状況と解決策は次のとおりです。

1. データベースは UTF8 エンコーディングを使用しており、これが文字化けの最も一般的な原因です。 PHP スクリプトで直接選択されたものは文字化けするため、クエリする必要があります:

mysql_query("SET NAMES GBK");

を使用して MYSQL 接続エンコーディングを設定し、ページ宣言エンコーディングが接続と一致していることを確認します。ページが UTF-8 の場合、ここで設定されたエンコーディング (GBK は GB2312 の拡張子) を使用できます:

mysql_query("SET NAMES UTF8"); 一般的に使用される UTF ではなく UTF8 であることに注意してください。 -8. ページで宣言されたエンコーディングがデータベースの内部エンコーディングと一致している場合、接続エンコーディングを設定する必要はありません。
注: 実際には、MYSQL のデータ入出力は実際よりも複雑です。上で説明したように、MYSQL 設定ファイル my.ini には 2 つのデフォルトのエンコーディングが定義されています。それらは、[client] の [default-character-set] と、クライアントで使用されるエンコーディングを設定するために使用されます。上記で指定したエンコーディングは実際には、MYSQL クライアントがサーバーに接続するときのコマンド ライン パラメータcharacter_set_client であり、デフォルトのエンコーディングを使用するのではなく、クライアント データがどのようなエンコーディングであるかを MYSQL サーバーに伝えます。 ?

2. ページ宣言のエンコーディングがファイル自体のエンコーディングと一致しない場合、ブラウザに表示される内容が文字化けするため、これはまれに発生します。リリースすると、間違ったエンコーディングでページを開いて保存します。または、CuteFTP などの一部の FTP ソフトウェアを使用してオンラインでファイルを直接変更すると、ソフトウェアのエンコード設定が間違っているため、間違ったエンコードが変換されます。

3. バーチャルホストをレンタルした一部の友人は、上記の 3 つのエンコードが正しく設定されているにもかかわらず、依然として文字化けが発生していることに気づきました。たとえば、Web ページが GB2312 でエンコードされている場合、ブラウザのエンコードを手動で GB2312 に変更すると、Web ページの HEAD はすでに GB2312 として認識されます。 、ページは正常に表示されます。その理由は、サーバー Apache がサーバーのグローバルなデフォルト エンコーディングを設定し、httpd.conf に AddDefaultCharset UTF-8 を追加するためです。このとき、サーバーは最初に HTTP ヘッダーをブラウザーに送信しますが、その優先順位はページ内で宣言されたエンコーディングよりも高くなります。当然、ブラウザーはそれを誤って認識します。解決策は 2 つあります。管理者は、AddDefaultCharset GB2312 を独自の仮想マシンの構成ファイルに追加してグローバル構成をオーバーライドするか、独自のディレクトリの .htaccess で構成する必要があります。



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

www.bkjia.com

http://www.bkjia.com/PHPjc/318772.html技術記事 1. ファイルエンコーディング: ページファイル (.html、.php など) 自体が保存されるエンコーディングを指します。 Notepad と Dreamweaver は、ページを開くときにファイルのエンコーディングを自動的に認識するため、問題は少なくなります...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。