最近仕事の都合で文字コードの事ばっかり調べています。 纏めるにはもう少しかかりそうなんですけど、文字コード調べるにあたって、知っておいた方が良いことをさらっと書きます。 まず基本となるのはISO2022という形式。 これは文字コード系ではなく、文字コード系切り替え手法を定義していて、コレを抑えておかないと、JISX0208とか、JISX0213が理解出来ません。 泣 特徴は、0x1b(ESC)をつかって文字をコード表を切り替えることと、複数バイトを1文字に割り当てることが出来ること。 94×94=8,836文字表現可能です。 JISX0208は普段我々が使う文字コードで、第一水準と第二水準の漢字が含まれます。WindowsXPはコレに準拠しています。 VistaはJISX0213準拠で、2004年に編纂されたJISX0213:2004に準拠しています。 とはいっても、WindowsはJISXを拡張したcpxxxシリーズを使っています。 JISX0208であればcp932とかがそれにあたります。 あとちょっと困るのが、JISXの中には、ベンダーによって違う文字が割り当てられているものがあります。いわゆる機種依存文字って奴ですね。JIS -> unicodeなら問題ないんですけど、そのあと、unicode -> JISとすると、文字が変わってしまう事があります。ラウンドトリップ問題とか言われる奴です。 一番なじみの深い、Shift_JISは、実はISO2022に準拠していなくて、独自のコード体系ですが、JISXが採用している区点式のコードから計算式で算出可能です。 まぁ、算出できたところで、WindowsVistaでさえ、フォントに含まれていない文字形(グリフ)があったりするので、JISX0213に準拠するアプリを作るときは注意が必要なようです。 また、JISX0213にはサロゲートペア文字(UCS4)がいるので、コレも注意。聞いたところによると300文字程度らしいですけど。 暫くはこの辺りを調べ回る事になりそうです。