7.3 文字コード

コンピュータにおいては,文字は「そのまま」扱われているわけではありません.多くの場合は,

  • 「これらの文字を使うことにする」という文字の範囲(文字集合)を定めます.
  • さらにその中の各文字に対して,コンピュータ内部で扱えるビット列を対応させます(符号化).

この文字とビット列の対応を文字コードといいます.特に,日本語の文字に対する文字コードは漢字コードといいます. 現在広く使われている漢字コードは複数あり,そのことによって,異なる環境にデータを持ってきた時に不都合が生じることがあります.
文字コードの技術的な詳細は「情報と符号化」の章 hwb18.4.1 文字コード に譲ることにして,本節では日常の利用において漢字コードについて知っておくとよいことを学習します.

主に使われる漢字コード

まず,次の 3 つの漢字コードは伝統的に広く使われています.

  • EUC-JP(日本語 EUC)は,Linux 等の UNIX 系統の OS で使われてきました.
  • ISO-2022-JP(JISコード)は,インターネットの電子メールで使われてきました.
  • Shift_JIS(シフト JIS)は,Windows や Macintosh で伝統的に使われている漢字コードです(実際に両 OS で使われているのは亜種です).

これら 3 種類は,「基本的には」同じ文字集合に対するものなので,相互に変換が可能です.しかし,全く同じではなく,そこが厄介なところでもあります.
一方,最近では,世界で使われる文字を全て 1 つの文字集合で使えるようにしよう,という考えで作られた Unicode が普及しつつあります.Windows, Mac OS X, Linux, Java などで採用されています.Unicode を利用した符号化としては,UTF-8 と呼ばれるものが有名です.
これら 4 種類の漢字コードの変換を行うにはいろいろな方法がありますが,コマンドライン上から nkf を使って行うこともできます.詳しくは hwb18.4.2 文字コード変換 を参照して下さい.

半角文字と全角文字

昔のコンピュータでは,英数字などは縦横比が 2:1 の字形で表示し,一方漢字などの日本語の文字は縦横比が 1:1 の字形で表示するということが行われていました.これは,Windows に標準で付属している「MS明朝」などのフォントでも引き継がれています.
前者の,伝統的に縦横比が 2:1 の字形で表示されていた文字を半角文字,後者の,縦横比が 1:1 の字形で表示されていた文字のことを全角文字と慣習的に呼ぶ場合があります.だいたい,以下の表にある文字が半角文字と呼ばれることが多いようです.特に,表の下半分のカタカナと関連する記号は半角カナと呼ばれます.

文字の符号化に必要な情報量から,半角文字・全角文字のことをそれぞれ「1 バイト文字」「2 バイト文字」と呼ぶ場合もありますが,厳密に言うと若干注意が必要です.

  • 半角カナは,Shift_JIS では 1 バイトで符号化されますが,EUC-JP では 2 バイト, UTF-8 では3 バイトを必要とします.
  • EUC-JP, ISO-2022-JP, Shift_JIS では全角文字は 2 バイトで符号化されますが,UTF-8 では全角文字は 3 バイトまたは 4 バイトを必要とします.

半角文字と全角文字はコンピュータの内部では全くの別物ですので,データの入力や文書を作成する時には,半角文字と全角文字を混同しないようにすることが大切です.

  • 英語などの欧文を入力する際には,半角の英数字や記号類を使うのが基本です.全角文字・半角カナは使ってはいけません.
  • また,コマンドの入力(hwb15. コマンド)や,HTML 文書(hwb17.3 HTML 文書の書き方)のタグ,TeX ソース中のコマンド(hwb27. LaTeX),数値データ(例えば hwb28.2 簡単なグラフの描き方 など),そしてプログラム(hwb プログラミング体験)といった,何か特別な意味のある文字列を入力する場合も,半角文字でないといけない場合がほとんどです.
  • 日本語の文章を入力する際には,カタカナは全角にしましょう.英数字については(1 桁の数字は議論がありますが)半角のものにするのが良いでしょう.

機種依存文字

漢字コードは,大雑把に言えば JIS 規格などにより標準化がされています.しかし,正確に言うとそうではなく,コンピュータを作る会社が独自に追加の文字を追加することがありました.これらを慣習的に機種依存文字といいます.
以下の文字が機種依存文字と呼ばれることが多いです(これらは Unicode の中には最初から含まれています):

  • 丸囲い数字(①,②,……)や,一文字に収めた省略記号(㈱など)
  • 全角のローマ数字(Ⅰ,Ⅱ,ⅸ,……)
  • 全角1文字の中に「mm」「kg」「キロ」などと収めた単位記号(㎜,㎏,㌔,……)
  • 一部の漢字や携帯電話の絵文字

また,「電子メールでは半角カナは使ってはいけない」と一般にいわれていますが,これは JIS コードに半角カナは含まれていない(日本語 EUC,シフト JIS,Unicode には含まれている)ことによるものです.

JIS2004 に伴う字形の変更

従来,日本語の文字集合は,大雑把に言えば 90JIS と呼ばれるものか,あるいはそれを部分として含むものでした.しかし,2004 年に JIS2004 と通称される新たな文字集合が定められました.Windows では Windows Vista から,Mac では Mac OS X v10.5 から,それぞれこの JIS2004 に対応したフォントが付属しています.
この規格改正の大きな変更点として,同じ符号に対する文字の形が変更されたことが挙げられます.言い換えれば,同じ内容のデータであっても,90JIS に対応したフォントと JIS2004 に対応したフォントとでは,一部の文字の形が異なってしまうことになります.下に,90JIS と JIS2004 の字形の違いの例を示します:
90字形と04字形
例えば,「MS 明朝」「ヒラギノ明朝 ProN」といったフォントは,JIS2004 字形になっています.一方,「ヒラギノ明朝 Pro」などは,旧来の 90JIS 字形のままです.下の図は,これらを Microsoft Word(hwb22. 文書作成を参照)で表示させてみたものです.
Word における 90JIS/JIS2004 の打ち分け