タグ

javaとunicodeに関するastk_fのブックマーク (3)

  • Javaの文字列の長さを判定するには - $shibayu36->blog;

    自分の頭を整理するために書いておく。正しいかは知らない。 まず前提として、Javaの内部表現としての「文字」は16ビット長のUTF-16ということがある。そうすると、普通に長さを取得すると、UTF-16のサロゲートペアで表される文字は2文字と扱われる。 また、文字には合成済み文字という話がある。「か」の後に濁点を結合することで、「が」を表現するみたいなやつ。 これらから、どこまで考慮して文字列の長さを取得するかでやり方が違う。 UTF-16のサロゲートペアを考慮しない UTF-16のサロゲートペアを考慮する 合成済み文字を考慮する 以下試したサンプルコード。 import java.text.BreakIterator; public class UnicodeCharSample { public static void main(String[] args) { // 𪛀あが St

    Javaの文字列の長さを判定するには - $shibayu36->blog;
  • プログラミング言語における文字コードの話

    世の中がほぼUnicode前提になってめでたしめでたし。とはいかなかった現実の話。 String型でできる文字列処理とか、ソースコード自体、特に識別子で使える文字とか。 軽くおさらい: Unicode まあいろんなところでいろんな人が書いてると思うのでさらっと概要だけ。 Unicodeは、元々、「65,536文字あれば十分だろ」とかいう幻想の元、2バイト固定長の文字コードとして作られていました。 もちろん足りなくて、ビット数を拡張。基が2バイトのままでこの拡張した分を取り扱えるようにしたのが今のUTF-16で、拡張分は2文字分(4バイト)を使って表現。 この、2文字分使って1文字を表すやつのことをサロゲートペア(surrogate pair: 代理対)と呼びます。 あと、ASCII文字も2バイトになるのを欧米人が嫌って、ASCII文字はASCIIコードのまま、逆に漢字・ひらがな・カタカナ

    プログラミング言語における文字コードの話
  • JIS2004に含まれるサロゲートペア。Javaでの文字列操作を検証してみた | 株式会社メイプルシステムズ

    最近のマイブームは、映画「アナと雪の女王」関連の色んな動画を子供と一緒に見ることです。でも映画自体はなかなか観に行けずにいます。おにです。 ここのところ、タイトルにある「サロゲートペア(4バイトで1文字を表す文字)」に関わる時間が多く、油断すると錯覚(幻覚?)で「アナと雪の女王」の文字もサロゲートペアに見えて来そうです。(まだ老眼にはなってません。) 今回はその「サロゲートペア」が含まれた文字列のJavaでの文字列操作について試してみたいと思います。 サロゲートペアってなに? サロゲートペアは、上位サロゲートと下位サロゲートを組み合わせて1文字を表現する4バイトのUnicode文字です。Windows Vista(JIS2004)で追加された文字にサロゲートペアは304文字存在します。 Windows XPでは表示できなかった文字なのであまり馴染みはありませんが、Windows XPのサポ

    JIS2004に含まれるサロゲートペア。Javaでの文字列操作を検証してみた | 株式会社メイプルシステムズ
  • 1