ときどき、文字コードをとても意識しないといけない場面に遭遇する。
他からの入力がUCS2で、でも相手にはUTF-8で渡さないといけない、とか。
たまにしかUnicodeの細かいところを意識してないとすぐに混乱する。
UCS2、UCS4、UTF-8、UTF-16、Unicode、サロゲートペア...
どれがどれにあたるんだっけ、という具合。
さらに処理系、使ってるプログラム言語によっての扱い方の違いとかが入ってくると、さらに混乱。
とりあえず、昨日分かったのは「Javaのchar型はUTF-16なんだけど、サロゲートペアを考慮すると1文字32ビット表記ということもあるのでchar 2つで表記される場合もある」と。
いろいろ調べて勉強になった。サロゲートペアって用語だけは知っていたけど具体的にどういうことなのか、必要に迫られて調べてようやく理解できた。
Charactor.toChars()でU+10000以降のコードをサロゲートペアで返してくれるということも。
まぁ、知ってる人からは常識じゃんって話しですよねぇ...。
コメント