今回は、先々週に紹介したVista対応におけるJIS2004の扱いについて少し掘り下げます。
JDK 1.4 までは、char型はUnicodeの1文字をあらわしていたのですが、JDK 5.0からはそうとも限らなくなりました。
いわゆる「補助文字」と呼ばれる文字については、char型では2文字分で1文字をあらわすようになっています。
この「補助文字」については、JIS2004で追加となった文字の中にも一部存在するのです。
これにより、例えば String#length メソッドで文字数を取得しようとすると、取得できるのあくまで「UTF-16のコード数」が取得されるので、文字列の中に「補助文字」が含まれると正しい意図した文字数が取得できない可能性があります。
Vistaクライアントから入力された文字を受け付けるようなシステムでは、これに対応する必要があります。
JDK 5.0では、Unicode 4.0対応として「補助文字」を扱うAPIが追加されています。
上記の例では、String#codePointCount()を使えば文字数を取得することができます。
詳しくは、以下のSunの技術文書を参考にしてください。
http://java.sun.com/developer/technicalArticles/Intl/Supplementary/index_ja.html
■[テクノロジー]内の前後の記事
↑ Eclipse 3.5.1 リリース
→ [JIS2004対応]Java でサロゲートペアを扱う
↓ Windows XPからWindows 7に乗り換えるには
■更新日時での前後の記事
↑ 9月9日 お天気
→ [JIS2004対応]Java でサロゲートペアを扱う
↓ 9月8日 お天気
