文字コード表 基礎編第6回


20140218

これまで数回にわたって文字の話をしてきました。

一般的にプログラミングを学ぶ上で、こうした文字に関する知識はそれ程重要ではありません。文字はデータの一部であり、プログラミングというよりはコンピュータの基礎知識に分類されるようなものです。そのためプログラミングの入門書は、あまりページを割かずにさらりと流しているものも少なくありません。

この講座は「翻訳者のため」と謳っていますので、一般の方がプログラムを学ぶ場合とは異なります。「翻訳者がプログラミングの知識を仕事にどう活かすか」が主題ですから、文字の話は決して避けて通れません。そのため、少し数回に分けて説明しました。

とはいえ、あまり深入りすると本来のプログラミングから離れてしまいますので、文字の話は今回で最後にします。文字については、「ファイルの話(仮題)」や「正規表現の話(仮題)」といった別の講座でさらに詳しく取り上げようと考えています。

文字のまとめとして、今回は文字入力ツールで文字を見てみます。

IMEパッド、文字パレット、文字ビューア

キーボードからは入力できない文字などを入力するためのツールとして、Windowsに標準で装備されている「IMEパッド」、ATOKの「文字パレット」、Mac OS Xの「文字ビューア」、Linux(KDE)の「KCharSelect」があります。

現在の私の作業環境がWindowsのみですので、IMEパッドと文字パレットを使って説明します。それぞれ違いはありますが、根本的なところは同じです。

IMEパッド

IMEパッド

左側に文字カテゴリ(文字コードの種類)、右側に文字の表(マップ)が表示されます。

IMEパッド 文字一覧

文字カテゴリにはUnicodeとShift(シフトJISがあります。

JIS X ~というカテゴリ(赤枠)が見られますが、これは日本語の国内規格です。

  • JIS X 0208:第1水準・第2水準漢字
  • JIS X 0212:補助漢字
  • JiS X 0213:第3水準・第4水準漢字

文字にマウスカーソルを当てるとツールチップが表示され、その文字のコードを確認できます(下図の赤枠)。

IMEパッド ツールチップ

ATOK 文字パレット

ATOK 文字パレット

ATOKの文字パレットは上の図に見られるように文字のカテゴリがタブで分けられています。表で文字を選択すると「文字」というフレーム内に現在選択されている「体系」での文字コードが表示されます(赤枠内)。「文字情報」ボタンをクリックすると、次のダイアログが表示されます。

ATOK 文字情報

選択されている文字の情報を確認できます。

コードの違いを再確認

ここから文字パレットだけで説明します。文字パレットの「和文コード表」のタブには次のようなドロップダウンボタンがあります。

  • 体系:シフトJISやJISなどのコード体系を選択する(Unicode以外)
  • 見出し:文字コードは「ひらがな/カタカナ」、「記号/英/数字」、「第1水準」といった分類がなされています。選択した分類の個所(見出し)を表示します。

文字コード内の分類は標準で規定されています。つまり、アプリケーション依存ではありません。以下は、「シフトJIS」の「記号/英/数字」を選択しています。

シフトJIS 記号

「Unicode」タブでは、体系を選択することはできません。見出しの内容も「和文コード表」とは異なります。

Unicode 記号1

「半角・全角形」という見出しには全角のアルファベットや半角カタカナがあります。

Unicode 記号2

シフトJISの図とUnicodeの図を見比べてみると、シフトJISでは全角括弧がまとまっているのに対して、Unicodeでは離れたアドレスに分散していることがわかると思います。このように、Unicodeは必ずしも日本の文字体系に沿ったものではないことに注意してください。これは正規表現を利用する際に問題となります。

ひらがなやカタカナ、記号(囲み文字など)の配置が各コードでどう違うのか確認してみてください。面白い発見があるかもしれません。例えば、丸囲みの数字はシフトJISの場合1~20までしかありませんが、Unicodeの場合1~50まであります。ただし、まとまっていません。

まとめ

機種依存文字やフォントの話など、文字についてはまだまだありますが、この講座での文字の話はこの位で終わりたいと思います。

同じようなことを何度も繰り返し説明しているため、分かりにくくなってしまっているところがあるかもしれません。その上、肝心な点が説明不足のような気がしますが…

「文字」は思っている以上に奥が深く、そう簡単に理解できるものではありません。私自身、このブログを書きながら新しく覚えたことも数多くあります。文字コードやエンコードをひとつひとつ覚える必要はまったくありませんが、文字に対する意識を高め、文字コード扱い方や確認方法について理解しておくことは大切だと思います。

プログラミングに関係するかどうかは別にして、多少とも「文字」についてに意識を高める役に立てたでしょうか。

次回は「データ型」の話に戻って「数値」について話す予定です。

では、また。

修正:表記を「シフトJIS」に統一しました。

コメントしてみる