文字コード

文字コードは文字をビット列で表したもの、またはその対応関係です。文字とビット列との対応関係を文字コードと呼ぶ教科書と、文字を表すビット列を文字コードと呼んで、対応関係を文字コード体系と呼ぶ教科書とがあるようです。

文字に番号を付けた符号化文字集合と、それをビット列で表すための符号化方式とを分けて考えることもあります。

このあたりは、高校ではあまり深入りせず、ざっくり教えているようです。

7ビットのASCII(アスキー)という文字コードは、教科書でよく扱われます。ASCII(American Standard Code for Information Interchange)のCはcodeなので、「ASCIIコード」は冗長です(ただし自然言語はもともと冗長なものなので、「ASCIIコード」や「IT技術」に目くじらを立てるには及びません)。ASCIIはコンピュータで表す文字の代名詞みたいな語だった時代があり、そのころ発刊された『ASCII』という日本の雑誌がありました(現在の『週刊アスキー』)。

JIS(ジス)コードという語も教科書に出てきますが、JIS(日本産業規格)はいろいろな文字コードを定めており、JISコードというだけではあいまいです(一般にはISO-2022-JPのことを指すことが多いようですが、JIS X 0201のことをJISコードと呼んでいる教科書もあるようです)。JISで定めたおもな文字コードには次のものがあります。

Unicodeにほぼ相当するJIS X 0221(国際符号化文字集合(UCS))もあります。

JIS X 0208の文字集合の表し方として、Shift JIS(シフトジス)、EUC-JP(イーユーシージェーピー)、ISO-2022-JP(アイエスオーにーまるにーにージェーピー)の三通りがよく使われていました。

ただ、今は、上記も含め、多くの国の文字を含むUnicode(ユニコード)という文字集合が使われることが多くなりました。その符号化方式としてUTF-8やUTF-16などがありますが、一番よく使われるのがUTF-8(ユーティーエフエイト)です。

これからの時代はUTF-8で統一するのがいいと思いますが、古いShift JISなどが混在すると、文字化けが起きることがあります。

かつては、丸囲み数字(①②③…)や全角ローマ数字(ⅠⅡⅢ…)などは「機種依存文字」と呼ばれ、「機種」によって文字化けが起こると説明されてきました。例えばWindowsで①②③と書くと、Macでは㈰㈪㈫と表示されます。これらの文字はJIS X 0208に含まれず、WindowsとMacがそれぞれ独自にJIS X 0208を拡張したために起こった悲劇です。今はUnicodeを使えばこのようなことは起きません。

おもな「機種依存文字」
Windows
Mac

この種の文字化けを防ぐためには、メール送信にUnicode(UTF-8など)を設定すればいいのですが、設定できない場合の裏技として、昔iPhoneでメールの「署名」に ⌘ のような文字を含めると全体がUTF-8になるという技がありました。最近は特に裏技を使わなくてもUTF-8になるようです。

なお、英語圏では、丸囲み文字はあまり用いられていないようです。(1)、(2)、(3)などと書く方が、無限に続けられて便利です。ローマ数字もⅠ、Ⅱ、Ⅲ、Ⅳ等ではなく、半角ローマ字IやVを並べてI、II、III、IV等のように書きます(だからローマ数字と呼ぶのです)。日本語圏でもこのようにすればUnicodeを使わなくても文字化けが防げます。

ではUnicodeを使えば文字化けは絶対に起きないかというと、これまた微妙です。例えば日本の漢字と中国の漢字は字形が異なりますが、Unicodeではもともと同じだった文字は同じ番号になっているので、正しいフォントを使わないと、日本の文字が中華文字に化けたりします。例えば「骨」は中華フォントでは「」になりますが文字としては同じです(フォントがなければ同じに表示されるかもしれません)。

日本の文字に限っても、ややこしい事情があります。例えば、葛󠄀城市の「葛󠄀」と、葛󠄁飾区の「葛󠄁」は、同じ番号(U+845B)が振られています。IVSという仕組みを使えばこれらを区別して表示できます。ソフトがIVSに対応していれば、「葛󠄀」はU+845BにU+E0100を後置し、「葛󠄁」はU+845BにU+E0101を後置すれば区別して表示できます。

あと、Windowsの和文フォントが \(U+005C)を ¥(U+00A5)と表示するという問題があります。例えばWindowsのコマンドプロンプトでパスが C:¥Users¥... のように表示されても実際は C:\Users\... だったりするのは悩ましい問題です。

参考