厄介な文字コードエラー・文字コードの歴史と苦労から学ぶ
はじめに
先日、久しぶりにpython3を触った。
そしてUnicodeEncodeErrorでこけた。
windowsでpythonを触ると本当にwindowsが嫌いになってしまいそうだ。
それはさておき、
文字コードといえば、その歴史をたどってみると、とても面白い。
なんというか、人間の「どうなるか分からないけれど、とにかく先へ進んでみよう」というような思いが見える気がするのだ。
そして、あとで厄介な問題は起きるかもしれないけど、今それを考えても仕方がない。とりあえずこれで進んでみよう、というような気になれるのだ。
そんな勇気をもらいたい方は、文字コードの歴史という先人の苦労を、少しだけ覗かれてみてはいかがだろうか?
文字コードとは
みなさんはそんな言葉を聞いたことがあるだろうか?
まずはそんな、よく聞く言葉の基本的な意味を確認しておきたいと思う。
はじめに、
文字コードとは、簡単に言えば、人間が理解できる文字を、どのようにコンピュータが理解できるように表現するか、という規則のことだ。
そして、この規則がいろいろあって、その方法の一つとして、Unicodeやshift-jisがある。
そしてコンピュータ語を、shift-jisの規則に則って、日本語に直さないといけないのに、Unicodeで直してしまったりすると、おかしくなってしまう。これが文字化けだ。
それで私は、「文字コードおかしいよ!」ってパソコンに怒られて困っているというわけだ。
ところで、疑問に思わないだろうか?
なぜこんな、Unicodeやshift-jisなどという別の文字コードが存在するのだろうか?
わざわざ別の文字コードなど使っていなければ、こんな厄介なことにはならないのに。
文字コードの歴史
その文字コードがASCIIだ。
- ASCII
世界初の文字コード。これを基してに世界中で、さまざまな開発が進められた。そのため多くの製品でASCIIを使うことが前提のものがある。そのために、これ以降に作られた文字コードであっても、このASCIIと互換性を持つことが必要とされている。
ところが、このASCII、アメリカが作っただけあって、当然、他の国の文字
には対応していなかった(漢字とか)。
そこで、各国、自国の文字を表すため、ASCIIには対応しつつ、独自の文字コードを使い始めたのだ。
ところが、そうなると、国同士でやり取りなどをするとき、文字コードが違って困ってくる。
そういう経緯で生まれたのが、Unicodeという文字コードだ。
そういうわけで、最近は、このUnicodeを目にする機会が増えてきている。
そして今は、この文字コードの移行中なわけだ。
そんな中、私は、windowsでpython3なんて使うから、python3さんに怒られてしまった。(windows標準の文字コードはshift-jis(windows-31J)であるが、python3では文字をutf-8で扱おうとする)
まあそんな厄介な話は置いといて、何が言いたいかというと、
ASCIIとかいう、世界で初の、しかも今も延々と使われ続けている重要な文字コードの作成でも、その不完全な文字コードのために、こんな世界を巻き込むようなめんどくさいことが起きている。
そんな大きなことでさえ、見積もりがうまくいかなくて、厄介なことが起きているのだ。
それなら私がちょっとくらい見積もりを誤って、厄介なことが起きたっていいじゃないだろうか?
そう思って勇気をもらえるのだ。
補足
文字コードの詳細だとか、歴史だとか、だいぶ端折ってるから、検索してみるともっと詳しく知れて面白いと思う。
気が向いたら調べてみるといいんじゃないだろうか。
私としては、Unicodeが最初は2byteだったのに、文字が増えて、2-4byteになってったとか面白いと思っている。