javaとunicodeに関するmtzkyのブックマーク (8)

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

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

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

    Java Is the Language of Possibilities Java is powering the innovation behind our digital world. Harness this potential with Java resources for student coders, hobbyists, developers, and IT leaders.

  • J2SE 5.0 Tiger 虎の穴 Unicode 4.0 の補助文字のサポート

    ご存知でしたが、Unicode では char では収まらない文字があることを。 Java では言語が発表された当初から内部コードとして Unicode を採用してきました。もちろん、char は Unicode で文字が表される 16 bit になっていました。 だから、Unicode と char は相性がいいはずなのですが、今になって 16 bit では収まりませんでしたといわれても... Unicode で当初考えられていた文字数よりも地球上で使われる文字が全然多かったというわけですね。16 bit に収まらなかった文字を補助文字 (Supplementary Character) といいます。 補助文字が定義されたのは Unicode 2.0 からのようですが、実際に補助文字が使われたのは 3.1、そして Tiger では Unicode 4.0 をサポートするのです。ということ

  • [Java]IVSの異体字を元の字と同一視して比較する - terazzoの日記

    IVSと正規化について - Togetter 正直あまりちゃんと付いていけてないんだけど、結局のIVS入りの文字列をVS抜きのものとを同一と看做してワンメソッドで比較するような仕組みはJava 6でも入ってないらしい。 リンク先より引用: @ogwata @moji_memo IVSがそもそもUnicode正規化の対象外なのだと思います。互換漢字を統合漢字にする合成除外とは違って、IVSを基底文字だけにするのならVSを削除しちゃえばいいだけですし。 ということでVSを削除するコードを書いてみたり、異体字を実際に表示してみたりした。 予備知識 JavaのStringとcodePointの扱いについてはこのへんを参照。 IVSについてはUTS #37: Ideographic Variation Databaseを参照。統合漢字(UNIFIED IDEOGRAPH)の後ろにU+E0100〜U+

    [Java]IVSの異体字を元の字と同一視して比較する - terazzoの日記
    mtzky
    mtzky 2011/03/16
  • Java 6 でIVSを比較すると何が起こるか - yanok.net

    Java 6が対応しているUnicodeのバージョンは4.1だそうです 【追記: 後で確かめたら4.0だそうです。私の思い違いでした _o_】。IVSに使われる面0Eのvariation selector (異体字セレクタ)はこのバージョンには既に入っています。なので、最新IVDの知識は期待できないとしても、variation selectorを無視するくらいの処理はひょっとしたら入っていてくれないかな、と思ってちょっと試してみました。 まず、Stringクラスの挙動から。まあ、何が起こるかは大体想像できるのですが、一応確認しておきましょう。 こんな風な文字列があるとします。 String nonIvs = "与太郎"; String ivs1 = "与\uDB40\uDD00太郎"; String ivs2 = "与\uDB40\uDD02太郎"; ここで、\uDB40\uDD00という

    mtzky
    mtzky 2011/03/06
  • 「Java 6 でIVSを比較すると何が起こるか」の記事の誤り - Cafe Babe

    以下の記事に誤りが散見されるが,それが広まるのは望ましくないので,ここで誤りを指摘しておく. 「Java 6 でIVSを比較すると何が起こるか」(yanok.net) まず,Javaの文字列の同一性判定の話である. これは想像通りですね。単にcharの列を比較しただけの結果になっています。つまり、見た目の区別がつかなくても容赦なく別々の文字列として扱っています。これが何をもたらすかというと、Stringクラスで比較しているプログラムに対しては、"与" と "与[0E0100]" と "与[0E0102]" を、見た目の区別がないにもかかわらず、人が入力し分けてやらないと困ることになるということです。 Java言語でUnicode文字列が同一性を判定するには,いくつかの方法がある. java.lang.String#equals()…単なるUnicode文字シーケンスの同一性を判定する ja

    「Java 6 でIVSを比較すると何が起こるか」の記事の誤り - Cafe Babe
    mtzky
    mtzky 2011/03/06
  • IBM Developer

    IBM Developer is your one-stop location for getting hands-on training and learning in-demand skills on relevant technologies such as generative AI, data science, AI, and open source.

    IBM Developer
  • Oracle Java Technologies | Oracle

    Java Is the Language of Possibilities Java is powering the innovation behind our digital world. Harness this potential with Java resources for student coders, hobbyists, developers, and IT leaders.

  • 1