今更だけどJIS X 0213:2004(ヴァルカンの気まぐれ日記)

UTF-16で世界中の文字が表現できると思っていたが、足りなかったので2つ分のCharに仕様を変えたみたいらしいです(難しい・・

でも、Java側が対応しきれてなかったので、実装できなかったんだって、そして、JavaES5とか6で実装する環境が準備されたとのこと。ふーん!

Javaの内部の(char配列、StringクラスおよびStringBufferクラスで利用されている)文字エンコーディング方式は、UTF-16です。
そして、昔のUnicodeは世界中の文字が16bitで表現できると考えていたから、Javaでも「1文字=char型配列1つ分」という考え方でよかったんですが、実は16bitで表現できないことがわかったので、「さぁ困ったぞ」となってしまって、JSR204で検討された結果として、簡単に言うと「16bitで表現できない文字は、char型配列二つ分で表現してしまおう」となったのです。*1
つまり、Javaの仕様としては対応“できて”いるのですが、対応“する”ためには、上記のような概念の変更をJavaアプリケーション側で対処する必要があるというわけです。

それでも サロゲートペアには対応してないって事ですなぁ。

JIS X 0213:2004では、「ト」と「゜」を結合した文字などもありますが、結合などの正規化処理はJavaSE 6から実装されているので、現時点で、WLS9.x/10では結合文字は取り扱うことが出来ません。