Entries

矢野啓介『プログラマのための文字コード技術入門』

プログラマのための文字コード技術入門 (WEB+DB PRESS plus) (WEB+DB PRESS plusシリーズ)プログラマのための文字コード技術入門 (WEB+DB PRESS plus) (WEB+DB PRESS plusシリーズ)
(2010/02/18)
矢野 啓介

商品詳細を見る

文字コードにまつわる基本的知識について、実にうまくまとめられていて読んでいて楽しい。プログラマのための、とタイトルにあって、実際JavaやRubyでの文字コードの扱い方を書いた一章があるが、それ以外の内容は特にプログラマ向けではない。文字をどうやってビット列・バイト列で表現するかは特にプログラマに限った話でなく、文字コードという発想そのものがそうした問題なのだから。

文字コードの世界は実に複雑怪奇。もともと表意文字を多く用いる日本語などの言語をまったく考慮せず、アルファベットといくつかの記号くらいで定義されたASCII(それでも英語圏以外では早くも苦労したわけだが)から始まった文字コードは、様々な国や様々なグループで独自の発展を遂げている。発展の中では、当時メモリやネットワーク帯域が小さかった故に、工夫をして複雑になっているJIS-2022-JPや、できるだけASCIIと似たような仕組みを作ろうとして複雑な計算を持ち込んだShift-JISなどがある。その後、漢字をはじめとする表意文字については複数言語間で統一の試み(CJK統合漢字)があり状況は改善してきたが、それを取り込んだJIS X 0213やUnicodeのバージョンにしても、以前との整合性を保とうとして首尾一貫しない扱いになっている。それは複数言語間を含んで異体字を包摂して一つの文字コードと定めているものもあれば、すでにJIS X 0208で分離されているからという理由で統合されなかったもの、など。これらは文字コード間の変換を行う際に容易に問題になる。

本書はこれらの錯綜した状況を明解にまとめて、各文字コードの特徴と問題点をまとめており、非常に役に立つ。まずASCII、ISO/IEC 646、ISO/IEC 8859、JIS X 0201/0208/0212、そしてUnicodeといった様々な規格の様々なバージョンにおける符号化文字集合がどう扱われているのかを個別に述べている。その後、それらの文字コードを実際にどう実現するかの符号化方式としてのShift-JIS、EUC-JP、JIS-2022-JP、UTF-8/16/32などについて述べられる。

一通り文字コードの説明を終えた後は、Java 6、Ruby 1.8、Ruby 1.9において文字コードがどう扱われていて、どのような問題があるのかが述べられている。ここは正しく把握しないと嵌りそうなところで、プログラマでなくとも重要な箇所。特にJavaでのサロゲート文字と結合文字のStringクラスでの扱われ方は、すでに多くのところで問題になっている(C#など.net系も同じ)。なにせJIS第一・第二標準と第三・第四標準で書いたとき、文字数が変わってしまうのだから(もちろん例外有り)。

文字コードに興味のある人なら必読の一冊。文字コードの問題は、哲学的にも面白い。制御文字は文字と言えるのか、結合文字に使われる断片は何なのか、言語間をまたいで(特に表意文字において)文字が同じとはどういうことか、等々。
スポンサーサイト
この記事にトラックバックする(FC2ブログユーザー)
http://exphenomenologist.blog100.fc2.com/tb.php/585-bfd08825

トラックバック

コメント

コメントの投稿

コメントの投稿
管理者にだけ表示を許可する