文字コード今昔物語

2020年3月12日

システム技術担当 温泉卵

 

みなさん初めまして。システム技術担当の温泉卵と申します。
加齢とともにお腹がぷっくりと膨れてしまい、いまやダイエットは私にとって喫緊の課題です。運動を始めるか、食べる量を減らすか、その両方にとりかかるか。実は選択肢はひとつしかないのですが、日々の生活の中で健康な体・体形を得ることは、私にとって永遠の課題でもあり…。悩ましいことです。

 

さて、今回私がお話するのは「文字コード今昔物語」です。
普段何気なくコンピューターに打ち込んでいる「文字」とその裏にある「文字コード」の関係について、迫っていきたいと思います。

文字には数値が割り当てられている

私たちが文章作成やネット検索のために、打ち込んでいるこの文字。
実際のコンピューター内部では、いわゆる「あいうえお」のような文字ではなく、「数値」情報として扱われています。つまり、私たちが打ち込んでいる文字の情報は、コンピューターが記憶する際に、数値に変換されているのです。

 

たとえば、「あ」という文字を1、「い」という文字を2…というように、あらかじめ決められた「文字と数値の対応表」があり、それに従って変換・記憶されています。

 

人間にとっての文字が、コンピューターにとっては数値に置き換えられている様子

 


このように、1文字1文字に紐づけられた数値のことを、私たちは一般に「文字コード」と呼んでいます。

 

文字符号化方式と文字集合

では文字コードは、「文字と数値の対応」(これを“文字符号化方式”といいます)のことだと考えればよいかといえば、そう単純ではありません。実は文字コードには、他にも含まれる意味があるからです。

 

文字コードが初めて考えられた頃、コンピューターの処理能力は現在とは比べ物にならないほど低く、コンピューターに記憶できる情報量もごく少ないものでした。
そのため、処理可能な量にまで文字を絞り込み、日常的な使用に支障が出ない程度の文字にだけ文字コードの数値を割り当てることにしました。*1

この選び出された文字の集まりのことを、文字集合といいます。

選び出された文字の集まりを文字集合という

 

 

*1 文字集合が考え始められた当初はインターネットなどが発達しておらず、今ほど多国間での文字のやり取りの必要性がなかった、という背景もあります。

文字コードと「文字化け」

つまり文字コードは、「文字符号化方式」と「文字集合」が組み合わさったものと言えます。*2


しかし、世界には多くの言語が存在し、また文字符号化方式や文字集合自体も古くから存在するため、さまざまな文字コードが存在することとなりました。

 

その結果、コンピューターは文字を正しく処理することができず、とんちんかんな文字を表示したり、まったく文字を表示できないというようなことが起きるようになりました。このような状態になることを、私たちは一般に「文字化け」と呼んでいます。

 

このように、文字コードが複数存在する場合、異なるコンピューターやソフトウェア間では、互いに使用している文字コードへの適切な対応や、必要に応じて文字コードの変換なども必要になります。

あるコンピューターでは表示できるものが別のコンピューターでは意味不明な記号になってしまう様子

私たちが文字コードについて理解しておくことは、この文字化けを防ぐためにも大切なことなのです。
そこで次は、日本でよく使われる文字コード、「Shift_JIS」と「Unicode」について説明しましょう。

 

 

*2 文字コード=文字符号化方式ととらえている方も多いと思いますが、ここでは文字コードは文字符号化方式に加え、文字集合の概念も含むものとして説明しています。

Shift_JISとは

多くのオフィスでは、Windowsを搭載したコンピューターが使用されていると思います。このWindowsで長らく使用されてきた文字コードが、「Shift_JIS」です。

 

Shift_JISは、マイクロソフト社など数社が関わり1982年に制定し、その文字集合には「JIS X 0208」と呼ばれる、約7,000文字が採用されています。そして文字符号化方式は、当時既に使用されていた「半角の英数字」や「半角のカタカナ」なども共存できるよう(お互いが干渉しないよう)、注意が払われました。1982年というと今から40年近くも前になりますが、Shift_JISは今も現役の文字コードです。

 

Shift_JISについて、もう少し補足しておきましょう。
現在Windowsにおいて「Shift_JIS」と呼ばれるものは、JIS X 0208に「髙」(はしごだか)やローマ数字など、数百の文字をマイクロソフト社が独自に追加した文字集合に対して定めたものです。この独自に追加された数百の文字のことを「機種依存文字」や「環境依存文字」などと呼びます。


機種依存文字は、本来のShift_JISには含まれない文字なので、Windows以外のコンピューターでは正しく表示することができない(つまり文字化けする)可能性があります。仕事で時々、「機種依存文字を使わないように」などと指示される事があるかもしれませんが、その理由は文字化けを回避するためです。

Unicodeとは(1)

このように、かねてから存在し、私たちが日常で使うには今も充分に機能するShift_JISですが、もともと日本で定められた文字コードであり、基本的には国内だけで使用するのが前提。なぜなら、Shift_JISが制定された頃のコンピューターには、そもそもインターネットに接続するという発想がなかったため、日本国内で使えればそれで良かったからです。

 

それから十余年が経過し、グローバル時代が差し迫る1993年頃になってようやく世界中の文字を1つの文字コードで処理しようという機運が高まりました。
そこで登場したのが、Unicodeという文字集合です。*3

 

Unicodeという文字集合の存在によって、世界中の文字が1つの文字コードで表すことができれば、文字コードの変換や文字化けの解読など、煩雑な処理や問題から解放されることになります。非常に便利ですよね。

 

紆余曲折はあったもののUnicodeは今や世界的な標準となり(もちろんWindowsでも採用されています)、現在もバージョンアップが続いています。最近では、日本の新元号「令和」を1字にまとめた文字コードが追加されたりもしています。

 

世界中の文字が1つの文字コードであらわされる様子

 

 

*3 Unicodeは一般に文字コードの名前として理解されています。ここでは、Unicodeに複数の文字符号化方式が存在することを踏まえて、あえて「文字集合」として説明しています。

Unicodeとは(2)

さきほど、Unicodeを「文字集合」と説明しました。それでは、Unicodeの文字符号化方式はどうなっているのでしょうか。

実は、Unicodeに対しては複数の文字符号化方式が存在しているのです。

察しのよい方は「単一の文字集合が制定されたのだから、文字符号化方式も単一なのでは?」と思われるかもしれません。そうなればよかったのですが、残念ながら、理論通りにいかないのが現実。

昔に作られた文字コードとの互換性(共存)や、コンピューターの処理しやすさなど、求められる文字符号化方式は場面によってさまざま。その結果、Unicodeには、利用する場面に応じて複数の文字符号化方式が制定されることになりました。そして今後もかわらず、併存し続けることでしょう。

 

最後に、このコラムをお読みになった皆さんが耳にしたことがあるかもしれない「UTF-8」について、ご紹介しておきます。

UTF-8は、Unicodeにおける文字符号化方式の名称です。欧米で古くから使われていた文字コードと共存できることが特徴で、Windows10のメモ帳では、「UTF-8」で保存することができます。名前を皆さんもぜひ確認してみてくださいね。


Unicodeには複数の文字符号化方式がありますが、「特に文字符号化方式にこだわらず、Unicodeを文字集合とする文字コードの総称として」Unicodeと称する場合がとても多いです。普段の会話では、単にUnicodeと呼んでも差し支えないかと思いますが、文字符号化方式まで明確にする場合には、UTF-8などと言う必要がある事を覚えておきましょう。

最後に

いかがでしたか。「文字コード」には、文字符号化方式と文字集合という二つの意味が含まれている事や、現在使用されている主な文字コードにはShift_JISとUnicodeがあり、Unicodeには文字符号化方式としてUTF-8などがあることなどについて説明しましたがご理解いただけましたでしょうか?

早いもので、世界で初めて文字コードが制定されてから、既に50年以上が経過しました。その間、さまざまな文字コードが制定され、複雑な経緯をたどって現在に至っています。
本号では、文字を数値化したときの具体例や、1バイト文字、マルチバイト文字といった、文字を数値に変換した際の情報量などについてまでは説明できませんでしたので、機会があれば、そのあたりについてもお話しできればと思います。

 

最後までお読みいただきありがとうございました。

 

 

※記載されている情報は2020年3月時点のものです。


TOP