付録

Revised: 19th/Dec./2004; Since: 29th/May/2002

文字化け

文字化けは、ブラウザが文字符号化方法を誤って解釈するために発生します。日本語の文字セットには、次のような種類があります。

日本語文字セット
俗称文字コード名専ら使われる場所
シフトJISShift_JISWindows, Macintosh など
JISISO-2022-JP電子メールなど
EUC-JPEUC-JPUNIX
UnicodeUTF-16, UTF-8普及中。推奨。

本稿では、 Shift_JIS の利用を前提として、サンプルソースを掲載します。Windows などで、特に指定しない限りは Shift_JIS になっているはずです。多くのテキストエディタでは、保存時に文字コードが選べます。他の文字コードを利用する場合は、ソースコードを適宜書き換えてください。

UTF-16 の場合

例えば、テキストエディタでの保存時に、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

本稿では、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 のことを、メディアタイプと呼びます。

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/XHTML 文書のメディア・タイプ
メディア型HTML 4XHTML 1.0XHTML 1.1XHTML Basic / 1.1XHTML+MathML
text/html推奨可能 非推奨 非推奨 非推奨
application/xhtml+xml禁止 推奨 推奨 推奨 推奨
application/xml禁止 可能 可能 可能 可能
text/xml禁止 可能 可能 可能 可能

Copyright © 2002-2004 SUGAI, Manabu. All Rights Reserved.
2002-05-29 Published, 2004-12-19 Revised.
SEO [PR] !uO z[y[WJ Cu