最近『ジョエル・オン・ソフトウェア』を読んでいます。今更!

Joel on Software

著者/訳者:Joel Spolsky

出版社:オーム社( 2005-12 )

単行本 ( 387 ページ )


そのおかげで、プログラミングなどをする仕事で働き始めて3年になりますが、やっと「何で日本語の文字は16ビットで表現できるはずなのに、UTF-8だと3バイトになるの?」 と言うのが分かりました。というか、疑問に思ってただけで別に調べなかったので知らなかっただけでした。

Wikipediaに載っているとおりです。 16bit使うためには3バイト必要な仕様なのですね。

検証

1
2
3
4
5
# in ruby 1.8.7
$KCODE = "none" # but script encoding is utf-8
uft8_nihongo_str = "日本語の文字"
uft8_nihongo_str.split(//).enum_slice(3).map{|v| (v.first[0] >> 4).to_s(2)}
#=> ["1110", "1110", "1110", "1110", "1110", "1110"]

独学で必要なことだけ調べてやってきてると、こんな簡単な知識の欠落が起こりうるので、資格試験とかやっぱ馬鹿にできないんじゃないか、と思った。