文字コード

Character code

文字コードとは?

文字コードとは人間の言葉をコンピュータに理解してもらうのに必要な変換表です。
ドラえもんでいう「ほんやくこんにゃく」みたいなものです。

なぜ作られたの?

人間は日本語、英語、数字など多くの文字を使ってやり取りをしているが、
コンピュータは01の情報しか理解できません。

しかし、パソコン大好きな我々はどうしてもパソコンとお話をしたいです。
どうしたらパソコンと会話できるでしょうか。

①パソコンに対して日本語や英語で語りかける。
→パソコンが、んっ?てなります。

②人間が頑張って01で語りかける。
→非常に面倒ですし、そもそも例えばパソコンに「こんにちは」と挨拶したくても01でどのように表現したら良いか分かりません。

そこで人間とパソコンの橋渡しをすべく、文字コードが開発されました。

どうやって使うの?

人間が使う文字を文字コードを使ってコンピュータが読める数字に変換するためには2つのステップを踏みます。

1つ目のステップは符号化文字集合と呼ばれ、
2つ目のステップは文字符号化方式と呼ばれます。

第1ステップである符号化文字集合では変換したい文字に対して一意の番号を振ります。

第2ステップである文字符号化方式では第1ステップで振り分けた番号をコンピュータが分かるように01で構成される数字の列(バイト列)に変換します。


第1ステップ 符号化文字集合

変換したい文字に対して一意の番号を振ります。
この時振られた番号のことをコードポイントと呼びます。
このようにしてできる変換したい文字そのコードポイントペア集合
符号化文字集合です。

この符号化文字集合は辞書に似ていると思います。
例えば、「海」という言葉が辞書の40ページ目の上から6単語目にあるとします。
この40ページ目の上から6単語目という情報を40-6と表すと

海 : 40-6

というペアを作れます。

このペアを符号化文字集合に照らし合わせると、

「海」を変換したい文字、
「40-6」をコードポイントと見ることができます。

しかし、もし違う辞書で「海」という言葉を調べたい時、必ずしも40ページ目の上から6単語目に「海」があるとは限りませんよね?

例えば明鏡国語辞典では「海」は40ページ目の上から6単語目
つまり、

海 : 40-6

と表されたのに、

広辞苑では、「海」が82 ページ目の上から19単語目にあり

海 : 82-19

と変わってしまいます。

これは符号化文字集合にも同じことが言えて、例えば同じ「あ」のコードポイントを作ろうとしても、

ある規格(辞書)では

U+3042

と表されるのに対して、別の規格(辞書)では

4区2点

と表されます。

さらに辞書によって収録語数や収録されている言語が異なるように、
符号化文字集合でも規格(辞書)によって規格化された文字の量や種類が違います。

下にいくつかの符号化文字集合の規格をまとめてみました。

符号化文字集合の規格

Unicode:世界中の文字や記号など約14万4千語を規定(理論上約111万語収録可能)
JIS X 0208:日本語(ひらがな、カタカナ、漢字)やローマ字、記号など6,879語を規定


第2ステップ 文字符号化方式

第1ステップで変換したい文字に対してコードポイントを与えました。
第2ステップではコードポイントをパソコンが理解できるように01で構成される数字の列(バイト列)に変換します。

コードポイントをバイト列に変換することを符号化(エンコード)といい、符号化する方法を符号化方式と言います。

符号化方式には例として次のような方法があります。

  • UTF-8
  • UTF-16
  • Shift_JIS
  • EUC-JP

参考 UnicodeとUTF-8・UTF-16・UTF-32の違いとはYone's archive

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です