なぜ文字化けが発生するの?

主な文字コード

  • Shift_JIS
  • EUC-JP
  • JIS(ISO-2022-JP)
  • UTF-8

例えば、「あ」と言う文字はShift_JISでは16進数で「0x82a0」と表されます(この数字をコンピュータが読んで文字に変換します)。この16進数値が全く同じ数値であっても文字コードによって変換する文字が異なる場合があります。

サイト作成者が文字コードを明示しない場合は、ブラウザがこの16進数値の表れ方を解析して文字コードを自動的に判断します。しかし、異なる文字コード間でも、限られた文字コード領域を複数の文字コードが利用しているためにコードの重複があるために誤判断されることがあります。そういう場合に文字化けは発生します。

文字化けを防止するために

複数の文字コードを扱えるエディタを使うことをお勧めします。また、半角英数字だけで書かれたファイルをエディタで開くと、保存時の文字コードに関わらずShift_JISと判断されることが多いようです。コメント行などを使って日本語(2バイト文字)を入れておくほうがいいかもしれません。

文字コードを明示(宣言)してあげましょう。以下の方法があります。

HTTPヘッダで宣言

HTTPヘッダとは、HTTP(Hypertext Transfer Protocol)において、本文の送信に先立って送信される各種データです。PerlやPHPなどでページを出力している場合はHTTPヘッダで文字コードを指定できます。

  • Perl
    print "Content-type: text/html;charset=文字コード\n\n";
  • PHP
    header("Content-Type: text/html;charset=文字コード");

.htaccessで指定

AddType "text/html; charset=文字コード" html

拡張子「html」のファイルの文字コードを指定しています。

metaタグで指定

<meta http-equiv="Content-Type" content="text/html; charset=文字コード">

この記述はtitle要素より先に書くことをお勧めします。この記述より前にtitleタグがあると、ブラウザがそのtitleの中の文字から文字コードを判断してしまう場合があるからです。

ケアレスミスでの文字化けを防ぐために

上記の各指定とファイルの保存文字コードは同じものにしてください。

Geocitiesユーザが文字化けの質問をしているのをよく見かけますが、アドバンストHTMLエディタで作成されたファイルの文字コードがEUC-JPなのに対して

<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">

にしていたりするのが原因です。アドバンストHTMLエディタでHTMLを書いた場合は

<meta http-equiv="Content-Type" content="text/html; charset=EUC-JP">

としましょう。

よければアンケートにご協力下さい。今後のページ作りの参考にします。

このページは参考になりましたか?
© 10press rights reserved.  |  Last Modified: 2008-06-22T11:46:34

PAGETOP