1. ファイルエンコーディング: ページファイル (.html、.php など) 自体が保存されるエンコーディングを指します。 Notepad と Dreamweaver では、ページを開くときにファイルのエンコーディングが自動的に認識されるため、問題は少なくなります。ただし、ZendStudio はエンコーディングを自動的に認識しません。作業中に誤って間違ったエンコーディングでファイルを開き、変更を行った後にファイルを保存すると、文字化けしてしまいます。の文字が出てきます(しみじみ)。
2. ページ宣言のエンコーディング: HTML コード HEAD では、 を使用して伝えることができます。ブラウザ サーバー Web ページにはどのようなエンコーディングが使用されますか? 現在、XXX は中国の Web サイト開発で主に GB2312 と UTF-8 を使用しています。
3. データベース接続エンコーディング: データベース操作を実行するときに使用されるエンコーディングを指します。データベースからデータを送信するときは、データベース自体のエンコーディングと混同しないように注意する必要があります。たとえば、MySQL 内のデフォルトのエンコーディングは latin1 エンコーディングです。つまり、Mysql は Mysql に送信されるデータを latin1 エンコーディングで保存します。他のエンコーディングは latin1 に変換されます。
WEB 開発にエンコーディングが関係していることを知ると、文字化けの原因もわかります。これは、さまざまなエンコーディングのほとんどが矛盾しているためです。 ASCII と互換性があり、英語の記号が表示されない場合は、中国語は役に立ちません。一般的なエラーの状況と解決策をいくつか示します。
1. データベースは UTF8 エンコーディングを使用し、ページ宣言のエンコーディングは GB2312 です。これは文字化けの最も一般的な原因です。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] の [default-character-set] と [mysqld] の [default-character-set] は、それぞれデフォルトのクライアント接続とデータベースの内部エンコーディングを設定します。上で指定したエンコーディングは、実際にはコマンド ライン パラメーターです。 MYSQL クライアントがサーバーに接続するときに、デフォルトのエンコーディングを使用する代わりに、受信したクライアント データのエンコーディングを MYSQL サーバーに通知します。 2. ページ宣言のエンコーディングがファイル自体のエンコーディングと一致しないため、これはまれに発生します。エンコードが一貫していない場合、アーティストがページを作成するときにブラウザーに表示される内容は文字化けします。多くの場合、リリース後にいくつかの軽微なバグを修正し、間違ったエンコーディングでページを開いて保存することが原因で発生します。または、CuteFTP などの一部の FTP ソフトウェアを使用してオンラインでファイルを直接変更すると、ソフトウェアのエンコード設定が間違っているため、間違ったエンコードが変換されます。
3. バーチャルホストをレンタルしている友人の中には、上記 3 つのエンコードが正しく設定されているにもかかわらず、文字化けが発生する人もいます。たとえば、Web ページが GB2312 でエンコードされている場合、ブラウザのエンコードを手動で GB2312 に変更すると、Web ページの HEAD はすでに GB2312 として認識されます。 、ページは正常に表示されます。その理由は、サーバー Apache がサーバーのグローバルなデフォルト エンコーディングを設定し、httpd.conf に AddDefaultCharset UTF-8 を追加するためです。このとき、サーバーは最初に HTTP ヘッダーをブラウザーに送信しますが、その優先順位はページ内で宣言されたエンコーディングよりも高くなります。当然、ブラウザーはそれを誤って認識します。解決策は 2 つあります。管理者は、AddDefaultCharset GB2312 を独自の仮想マシンの構成ファイルに追加してグローバル構成をオーバーライドするか、独自のディレクトリの .htaccess で構成する必要があります。