天井

気の向いたことをつらつらと書いていきます

厄介な文字コードエラー・文字コードの歴史と苦労から学ぶ

 

はじめに

先日、久しぶりにpython3を触った。

そしてUnicodeEncodeErrorでこけた。

windowspythonを触ると本当にwindowsが嫌いになってしまいそうだ。

 

それはさておき、

文字コードといえば、その歴史をたどってみると、とても面白い。

なんというか、人間の「どうなるか分からないけれど、とにかく先へ進んでみよう」というような思いが見える気がするのだ。

そして、あとで厄介な問題は起きるかもしれないけど、今それを考えても仕方がない。とりあえずこれで進んでみよう、というような気になれるのだ。

そんな勇気をもらいたい方は、文字コードの歴史という先人の苦労を、少しだけ覗かれてみてはいかがだろうか?

 

 

 

文字コードとは

文字コード、文字化け、Unicode、shift-jis

みなさんはそんな言葉を聞いたことがあるだろうか?

 

まずはそんな、よく聞く言葉の基本的な意味を確認しておきたいと思う。

 

はじめに、

文字コードとは、簡単に言えば、人間が理解できる文字を、どのようにコンピュータが理解できるように表現するか、という規則のことだ。

 

そして、この規則がいろいろあって、その方法の一つとして、Unicodeshift-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になってったとか面白いと思っている。