漢字コードについて

インターネットで日本語を使用する際に用いられる文字コード (あるいは符号化方式)には、次の4つの種類があります。

JIS コード
電子メールやネットニュースなどで使用される文字コード。 JIS(日本工業規格)で規定されている文字コードを ISO(国際標準化機構)で規定されている ISO 2022 という符号化方式の枠組みで表現した ISO-2022-JP のことを指す。
Shift-JIS コード
Windows や Macintosh のようなパソコンで使用される文字コード。 一部の UNIX ワークステーションでも用いられている。 日本語以外には対応していない。
EUC
主に UNIX ワークステーションで用いられている文字コード。 これも文字コードを ISO 2022 に準拠して符号化したもの。 日本語以外にも対応しているが、複数の言語は混在できない。 システム工学部のコンピュータではこれを用いている。
Unicode
Windows NT など最近のオペレーティングシステムで導入された文字コード。 世界中のすべての文字を一つの文字集合として取り扱おうとするもので、 UCS(万国文字集合)と名付けられた ISO 10646 という規格の、 基本部分に相当する。 Java 等でも使用されている。UNIX でも普及するかも知れない。

「文字」というのは「字形」によって音や意味を表現するものですが、 それではコンピュータで扱いにくいので、 ある特定の言語や目的で使用する文字を集めて(文字集合)、 その一つ一つの文字に番号を振ります。 この番号を「文字コード(文字符号)」と言います。 日本語で通常使用する仮名や漢字を表す場合は JIS(日本工業規格)で規定されている JIS X 0208 という規格が通常用いられます。 これはいわゆる「区点コード」です。

ところが世界には日本語以外のいろんな言語や文字がありますから、 インターネットのようにそれらが混在する世界では、 日本国内で決めた文字コードが 他の国の文字コードと重なってしまう可能性があります。 そこで ISO(国際標準化機構)によって ISO 2022 という規格が規定され、 各国の独自の文字コードをこの枠組みに組み込むことによって、 複数の文字集合が混在できるようにしています。 「JIS コード (ISO-2022-JP)」は JIS X 0208 をこの枠組みで表現したものです (これに対して Unicode は、すべての国/言語の文字について 互いに重ならないように文字コードを決めた、単一の文字集合です)。

そういう点で「JIS コード (ISO-2022-JP)」は、 「異なるコンピュータ間で情報を交換するために規定された文字コードの標準規格」 であると言えます。 これに対して Shift-JIS コードや EUC は、 特定のコンピュータ(オペレーティングシステム)における、 文字コードの内部表現としての性格が強いと考えられます。 従って Shift-JIS コードや EUC は、 コンピュータネットワークを経由した情報交換に適しているとは言えません (全く不可というわけではありません)。 実際、電子メールやネットニュースでは、 メッセージや記事を JIS コードに変換してから送出しています。

ところがデータファイルそのものを読む人の方から「取りに来る」Web では、 このような考え方が浸透していません。 テキストファイルの文字コードには、 通常そのコンピュータの内部表現が用いられていますから、 Web では結果的に、コンピュータの内部表現として用いられている文字コードが、 そのままネットワークに流れ出ていることになります。

日本語に対応した Web ブラウザは、 Web ページに使われている文字コードが上のいずれであっても 表示できるようになっています。しかし Shift-JIS コードと EUC は完全に自動判別できない場合があり、 これが文字化けの原因となることがあります。

このため、システム工学部の Web サーバ (www.sys.wakayama-u.ac.jp) では、 HTML ファイルを送出するときに、その文字コードが EUC であると Web ブラウザ側に伝える設定をしています (charset=euc-jp)。 もし、他の文字コードで作成された HTML ファイルを置きたいときは、 そのファイルと同じディレクトリに .htaccess というファイルを作り、 中に次のうちのどれか1行を書いておいてください (そのディレクトリから下にある、 すべてのディレクトリのファイルが対象になります)。

  AddType "text/html; charset=utf-8" .html

  AddType "text/html; charset=euc-jp" .html

  AddType "text/html; charset=shift_jis" .html

あるいは次善の策ですが、 Web ページのヘッダ部で漢字コードの指定をするという方法もあります。 ただし、これはうまく機能しない場合もあります。

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

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

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