プログラマでありたい

おっさんになっても、プログラマでありつづけたい

文字コードのお勉強

 開発者の人生の中で、12%くらいは文字コードで悩まされていると思う。
Java・JDBCにおけるCP932の"〜"問題。PerlのUTF-8フラグ。
MySQL4.1の文字コードの自動変換機能。通信プログラムの制御文字とか。
ちょっと体系的に知りたくて、本を読んでみた。

文字コード超研究

文字コード超研究


学んだこと、思い出したこと。
 EUC-JPは、ハイフン。Shift_JISはアンダースコア
  exportの時によく悩む。

 Shift_JISの困ったチャン。
  漢字コードの一部に制御コードが紛れ込んでいる。
  この前、S_JISのデータをDBにダンプする時にエラーが起きて困っていた。
  そりゃそうか。"表"とかね。

 EUC
  自分がどこの国のコードなのかは、自身には持たない。
  EUC-JPとEUC-KR,EUC-CNのコードは被っている。コード外に持っている必要がある。

 UTF-8
  実は可変長。1〜6バイト。ひらがな・カタカナ・漢字は3バイト。
  ASCII部分はASCIIと共通。
  なんで、ASCIIしか扱えないアプリでも、ASCII部分のみは通用する。
  ASCII部分で構成されていたら、尚更問題ない。(人は、それをASCIIと呼ぶ・・・。)  
 ISO 2022
  複数のコード系を切り替えて使える。柔軟。その分、プログラマ泣かせ。
 
 ISO-2022-JP
  ASCIIとJISローマ字、78JIS、83JISが使える文字集合

 ISO-2022-JP-1
  ISO-2022-JPの文字集合に加えて、
  JIS X 0212-1990(補助漢字)

 ISO-2022-JP-2
  ISO-2022-JPの文字集合に加えて、
  GB2312-80(中国)、JIS X 0212-1990(補助漢字) KS X 1001:1992(韓国)
  ISO 8859-1:1998(ラテン文字1) ISO 8859-7:1998(ラテン/ギリシャ文字)
  中国からのスパムは、ISO-2022-JP-2かUTF-8が多いのかな?

 ちなみにISO-2022-JPには、半角カナは無い。
 メールで半角カナを送られると困る人もいる。

 BASE64
  メールで、バイナリデータを添付する時に使われるエンコード。
  Shif_JISやEUC-JPなどの8ビット文字をエンコードして送られる。

 Webページの美乳
  EUC-JPのWebページは、美乳という文字を入れておけば文字化けしない。
  結構有名な話。何故なら、EUC-JPにしかない0xfd,0xfeというコードがあるから。
  そんなことより、ちゃんとエンコードの指定をしておけと言うお話。

 所感
  斜め読みしたけど、かなり良い。一家に一冊ぐらいのレベルです。
  最初から知っていれば、はまる事も少ないはず。
  難点は、重いので寝転がって読めない・・・。手が疲れる