Revised: 19th/Dec./2004; Since: 29th/May/2002
文字化けは、ブラウザが文字符号化方法を誤って解釈するために発生します。日本語の文字セットには、次のような種類があります。
俗称 | 文字コード名 | 専ら使われる場所 |
---|---|---|
シフトJIS | Shift_JIS | Windows, Macintosh など |
JIS | ISO-2022-JP | 電子メールなど |
EUC-JP | EUC-JP | UNIX |
Unicode | UTF-16 , UTF-8 | 普及中。推奨。 |
本稿では、 Shift_JIS の利用を前提として、サンプルソースを掲載します。Windows などで、特に指定しない限りは Shift_JIS になっているはずです。多くのテキストエディタでは、保存時に文字コードが選べます。他の文字コードを利用する場合は、ソースコードを適宜書き換えてください。
例えば、テキストエディタでの保存時に、UTF-16を選ぶ場合、次のようにします。
<?xml version="1.0" encoding="UTF-16" standalone="no"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja"> <head> <meta http-equiv="content-type" content="text/html; charset=UTF-16" /> <title>はじめての XHTML 1.0</title> </head> <body> <p>こんにちは、 XHTML 1.0!</p> </body> </html>
上の例では、文字コードの情報を書き換える箇所は 2 箇所です。他の文字コードの場合も、適宜これに習って書き換えてください。 HTML 文書の側で、使っている文字セットを明示しておけば、ブラウザが解釈し間違ることがなくなり、文字化けの発生がなくなります。
本稿では、Content-type
を、head 要素中の meta http-equiv
要素で記述しました。
meta 要素による Content-type
の指定は、文字化け発生回避の簡便な手法ですが、本来的には、HTTP GET リクエストに対する MIME ヘッダに含まれているべきです。サーバが Apache の場合は、ディレクトリに .htaccess
というファイルを作成し、次の一文を含めます。当該ディレクトリとそのサブディレクトリに含まれる *.html
ファイルの Content-type ヘッダが "application/xhtml+xml; charset=Shift_JIS
" になります。[参考1, 参考2]
AddType "application/xhtml+xml; charset=Shift_JIS" html
Apache 以外のサーバで公開する場合は、ここに挙げたように、meta 要素で記述することもできます。そのファイルの文字セットを記述するので、そのファイル内で日本語が現れるよりも先に記述してください。 head 要素の開始タグの直後が良いでしょう。
Content-type で指定する text/html
のことを、メディアタイプと呼びます。
text/html
です。text/html
か application/xhtml+xml
が推奨されます。application/xhtml+xml
が推奨され、text/html
は推奨されません。XHTML では、文書のメディアタイプの指定を、"application/xhtml+xml
" とするように推奨されています。HTML は "text/html
" であり、ほかの値は不可です (MUST NOT)。XML 応用言語である XHTML 1.0 は "application/xhtml+xml
" を指定すべき (SHOULD) ですが、HTML との互換言語でもあるので "text/html
" も指定可能です。XHTML 1.1 では "text/html
" を指定すべきでありません (SHOULD NOT)。
また、"application/xhtml+xml
" である文書には、meta http-equiv
を指定すべきでない (SHOULD NOT) とされています。このとき、文字符号化方法は、XML 宣言の encoding
属性でのみ記述されます。
メディア型 | HTML 4 | XHTML 1.0 | XHTML 1.1 | XHTML Basic / 1.1 | XHTML+MathML |
---|---|---|---|---|---|
text/html | 推奨 | 可能 | 非推奨 | 非推奨 | 非推奨 |
application/xhtml+xml | 禁止 | 推奨 | 推奨 | 推奨 | 推奨 |
application/xml | 禁止 | 可能 | 可能 | 可能 | 可能 |
text/xml | 禁止 | 可能 | 可能 | 可能 | 可能 |