このページの本文へ

悟空、村の中で文書を探す (5/7)

2008年11月15日 08時00分更新

文●清田陽司/東京大学 情報基盤センター 図書館電子化研究部門 助教

  • この記事をはてなブックマークに追加
本文印刷

 英語と日本語を混ぜて文書を書くにはどうしたらいいでしょうか? 前ページの2つの表を見比べてみると、「30」という数字は、ASCIIコード表では「0(ゼロ)」という文字を表すのですが、後のJISコード表では「亜」という漢字の1バイト目(3021の「30」)にあたります。ASCII(英語)とJIS(日本語)のどちらを約束事として使うかをあらかじめ取り決めておかないと、混乱してしまいますよね。

 そこで、異なる対応表を併用する方法も「共通の約束事」として決めておきます。異なる対応表を併用する方法には、大きく分けて次の3つがあります。

1.特殊な記号を使って対応表を切り替える方法

 オリンピック開会式の「参加国別の選手入場行進」を思い浮かべてください。各国の選手団の列の先頭に、必ず「国名が書かれたプラカード」を持った人が歩いています。プラカードのおかげで、「あ、これから日本の選手団がやってくる」と分かります。文字コードでも同様に、「ここからはJISの文字列が来るよ」「ここからはASCIIの文字列が来るよ」という意味をもつ「特殊な記号」を決めておけば、複数の文字コードを混ぜて文章を表現できます。日本語の電子メールでは、主にこの方法が使われています。(ISO-2022-JP、通称「JISコード」と呼ばれています)

2.片方の対応表の空いた部分にもう片方の対応表を押し込める方法

 ASCIIコードの表をもう一度見てください。ASCIIは、0~127の数字しか使っていないことがわかります。1バイトでは0~255の数字を表現できるにもかかわらず、128~255の範囲はまったく使われていないのです。そこで頭のいい人は考えつきました。「ASCIIの空いた部分をうまく使えば、もう片方の対応表も扱えるかも!」 そこで以下の図を見てください。


Google連載

JISとシフトJISでは2バイトの数値の使い方が異なる


 JISの文字は2バイトで表現されていますが、そのうちの先頭の1バイトをずらしてASCIIの空いた部分に入るようにしています。このやり方で表した文書を読むには、128~255の数値が文書中に出てきたとき、「あ、このバイトと次のバイトは JISの文字として読めばいいんだな」と思えばいいわけです。日本国内で普及しているほとんどのパソコンは、この方法で日本語を扱っています。通称「シフトJISコード」と呼ばれる約束事です。また、Linuxなどで使われている「EUC-JP」という文字コードも、この方法を採用しています。

3.複数の対応表をまとめて大きな対応表を作ってしまう方法

 上に書いた2つの方法は、文書を扱うソフトウェアを作る立場からは非常に面倒なものです。たとえば、マイクロソフトのWordというワープロソフトは世界中に販売されていますが、文字の対応表が言語ごとに異なっているため、世界中のあらゆる言語の対応表に適するように別々に設計する必要がありました。

 そこで、「世界中のあらゆる言語の文字対応表を集めて、一つの巨大な対応表に押し込めてしまおう」という考え方が登場しました。最近インターネットの世界で標準的に使われるようになった「Unicode(ユニコード)」と呼ばれる対応表は、この考え方に基づいて作られています。巨大な対応表が世界中に通用する約束事になったおかげで、ソフトウェアの開発者は以前より楽にソフトウェアが作れるようになりました。GoogleはあらゆるサービスでUnicodeを全面的に採用しているそうです。



 インターネットの世界でどんな文字コードが使われているか、実際にのぞいてみましょう。Webブラウザ(「Internet Explorer」「Firefox」など)では、いま表示しているWebページがどんな文字コードで書かれているかを確かめることができます。「アスキー・メディアワークス」のトップページ(http://asciimw.jp/)では、シフトJISコードが使われています。一方「ASCII.jp」(http://ascii.jp/)はUnicodeの一種「UTF-8」が使われています。

アスキー・メディアワークス(左)とASCII.jp(右)のトップページ

 ひとつ実験をしてみましょう。Unicodeで書かれている「ASCII.jp」のページを、違う文字コード「シフトJISコード」で読んでみます。「なんじゃこりゃ! 全然読めないよ」―――文書の書き手と読み手が同じ文字コードを使っているのがどれだけ重要なことか、おわかりいただけますよね。「約束事がたくさんあって本当にややこしいなぁ!いっそ一つに統一してしまえば簡単なのに」―――全世界でやりとりされる文書がすべて同じ文字コードで書かれるのは一つの理想ですね。

Google連載

Unicodeで書かれたページをシフトJISコードで読み込むと文字化けしてしまう

 グーグルの調査によれば、Unicodeで書かれた文書の割合はインターネットの世界で急激に増加していて、2008年にはASCIIを上回って最大勢力になりました。今後もUnicodeによる統一の流れは続くことでしょう。ただ、これまでに蓄積されてきた膨大な文書にはUnicode以外の文字コードで書かれているものが大部分なので、当分の間はさまざまな文字コードとのお付き合いを続ける必要がありそうです。

Google連載

出典: The Official Google Blog: Moving to Unicode 5.1 (posted 5th, May 2008)http://googleblog.blogspot.com/2008/05/moving-to-unicode-51.html

 Webブラウザやメールソフトの開発者のさまざまな工夫のおかげで、私たちがふだん文書を読み書きするときに、文字コードのことを意識する必要はほとんどありません。しかし、文字コードがなければ、メールをやりとりすることも、Googleで検索することもできません。Googleに検索キーワードを入力してから検索結果が表示されるまでの間には、Googleを構成する多数のパソコンの中で文字コードが働いているのです。文字化けしたメールやWebページを見たときは、文字コードのことを思い出してあげてください。


次ページ:文書検索の種明かし

この連載の記事

一覧へ

この記事の編集者は以下の記事をオススメしています