ScalaやJavaは拡張領域の文字をサロゲートペアで表すので、文字数をカウントしたいときに単純に文字列のサイズを取ると実際の文字数とずれてしまう。Java 1.5からはUnicodeのコードポイント を数えるメソッドが追加されているので、これを使えば正確に文字数をカウントできる。

以下、地球の絵文字を例に取って説明。

scala> val earth = "uD83CuDF0D"
earth: String =