時々文字化けに遭遇することがありますが、見直しと草取りのために文字化けについて質問を受けることがあります。最初は文字化けに遭遇して戸惑うかもしれませんが、文字化けが発生するポイントをいくつか理解しておけば、簡単に文字化けを回避したり解決したりすることができます。
ここで説明したコードの文字化けの問題は、一般に 2 つのカテゴリに分類されます:
1. ページに文字化けが表示される
2. データベースから値を取得または挿入するときに文字化けが発生します。
文字化けを回避する最善の方法は、エンコーディングを指定するすべての場所で同じエンコーディングを指定することです。統一エンコードには UTF-8 を使用することをお勧めします。文字化けが発生する上記3つの状況について説明します。
1 つ目のケースでは、データベース操作が関与しないか、データベース操作によって文字化けが発生しないと仮定します (データベースによって文字化けが発生する状況については後述します)。次に、スクリプト ファイルのエンコーディングがページのエンコーディングと一致しているかどうかを確認するだけで済みます。ファイルのエンコーディングは Eclipse、notepad2、Netbeans などの一般的なテキスト エディタで変更できますが、Web ページのエンコーディングはメタ タグを通じて指定されます。
< メタコンテンツ=” 文字セット=UTF-8” http-equiv= ”コンテンツタイプ” />
2 番目のケースでは、データベース エンコーディング、データベース テーブル内のフィールドのエンコーディング、およびページ エンコーディングが一貫している必要があります。データベースエンコーディングとフィールドエンコーディングは、作成時に照合順序を設定することで指定できます。ページのエンコーディングについては上で説明しました。
データベース操作を実行するときに、挿入した文字が読み出し時にも同じであり、問題がないように見えることがあります。しかし、データベースを管理していると、サードパーティのツールでは文字化けが表示されます。これは、データベースに接続するときのエンコーディングと、データベースまたはページのエンコーディングとの間の不一致が原因で発生します。データベース接続が確立された後、SQL ステートメントを通じてエンコーディングを指定できます: SET NAMES UTF8。ハイフンがないことに注意してください。
概要: ここで推奨される方法は、すべてのエンコーディングを utf-8 として指定することです。
スクリプトファイルのエンコード: utf-8
Web ページのエンコード:
< メタコンテンツ=” 文字セット=UTF-8” http-equiv= ”コンテンツタイプ” />
データベースとフィールドのエンコーディング: utf8_general_ci
データベース接続エンコーディング: SET NAMES UTF8;
余談: UTF8 エンコードが推奨されるのはなぜですか?唯一覚えているのは、国際的に受け入れられている言語エンコードであり、互換性が高いので、それを使用しているということです。以下は専門的な説明からの抜粋です:
UTF-8 エンコードを使用する唯一の利点は、外国のユーザーが英語版の Windows XP を使用している場合、中国語、日本語、韓国語、アラビア語であっても、UTF-8 でエンコードされた Web ページを世界共通で正常に表示できることです。言語エンコーディング、UTF-8 の推進は、Google のアプリケーションとブログの開発者のおかげです。 Windows XP 英語版 IE6.0 を使用して gb2312 言語でエンコードされた Web ページを参照すると、言語パックをインストールするかどうかを尋ねるメッセージが表示されます。したがって、多くの外国人観光客を失う可能性があります。
gb2312 エンコードを使用する利点は、プログラムによって生成される Web ページのテキストが ANSI エンコード形式を使用するため、UTF-8 テキスト エンコードよりも容量が節約され、アクセス速度がわずかに速くなることです。容量の比率については、を参照してください。私がここで行った正確な実験。
日本のブログの多くは日本語 (EUC) エンコーディングと UTF-8 エンコーディングを使用しており、韓国語 (EUC) と韓国語のエンコーディングも多くを占めています。
UTF-8 言語エンコードを使用するか、自分の国の言語エンコードを使用するかは、愛国的であるかどうかとはほとんど関係がないと結論付けることができます。言い換えれば、中国では愛国心がない人は誰もいません。 UTF-8 と gb2312 の間で迷っています。UTF-8 エンコードを使用する必要がありますか?何千回も尋ねられました。