タグ

unicodeとUTF-8に関するrin51のブックマーク (7)

  • 絵文字がある種のUnicodeバグを世界から一掃しつつある件について|Rui Ueyama

    UnicodeのUTF-16エンコーディングではほとんどの文字(コードポイント)は2バイトで表現されるが、Unicodeに後から追加収録された文字の多くは4バイトで表現される。4バイト文字がうまく扱えないプログラムというのはわりとよくある。しかし世界中で広く使われるようになった絵文字がよりによって4バイト文字であるせいで、そのような文字が扱えない問題がよいペースで解決に向かいつつある。それについて少し説明してみようと思う。 Unicodeが80年代から90年代初頭にかけてデザインされたときの目標の一つは、Unicodeに含まれる文字数を65536個以内に収めることだった。現代の文章を実用的なレベルで表すためには、漢字などを含めてもそれだけの種類の文字があれば十分だと考えられたのだ。当然これは1文字を2バイトで表すことを念頭に置いていた。つまりコンピュータの揺籃期から当時に至るまで単純に英語

    絵文字がある種のUnicodeバグを世界から一掃しつつある件について|Rui Ueyama
  • Ruby1.9でUTF-8の漢字だけ正規表現でヒットさせる - 屑プログラマの憂鬱

    1.9.2 :001 > "隣の客は良く柿う客だ".each_char do |c| 1.9.2 :002 > if c =~ /\p{Han}/ 1.9.2 :003?> puts $& 1.9.2 :004?> end 1.9.2 :005?> end 隣 客 良 柿 客 => "隣の客は良く柿う客だ" Ruby1.9では正規表現のエンジンがonigurumaに変更になったことで、Character Propertiesが利用できるようになりました。\p{Han}は、漢字*1です。日語で言えば他にも、\p{Hiragana}, \p{Katakana} があります。 参考: Class: Regexp (Ruby 1.9.3) Ruby 1.9 における日語処理のポイントをまとめてみました - ¬¬日常日記 MODULE.JP - 日語に絡むUnicodeブロックとスクリ

    Ruby1.9でUTF-8の漢字だけ正規表現でヒットさせる - 屑プログラマの憂鬱
  • Unicodeブロックを利用する - さわだのノート

    実家はいまだに携帯電話がまともに通じず、インターネットもないという情報鎖国状態でした。眼は休まったけど、やっぱりネットがないと落ち着きません。 さて、前回PerlのUnicode文字列に対する正規表現検索がなにやらちょっと変わった動作をするというお話を書きました。それに関連して、「Unicodeブロック」という機能がPerlの正規表現検索では利用できるようです。「\p{hoge}」と記述することで、Unicodeで定義されている文字のブロックが使えるのだそうです。 要するに、漢字やひらがな、カタカナの文字だけにヒットする正規表現が簡単に書けるということです。正直なところ、詳しくは僕もよくわかりません。 メタ文字 説明 \p{N} 全角・半角数字 \p{LC} 大文字・小文字のある文字(半角・全角両方) \p{Lu} 大文字の文字(半角・全角両方) \p{Ll} 小文字の文字(半角・全角両方

    Unicodeブロックを利用する - さわだのノート
  • MODULE.JP - 日本語に絡むUnicodeブロックとスクリプト(正規表現)

    といった感じ。ちなみにjava.util.regexとPerlのUnicodeブロックは接頭子Inを使うが、.NETの場合は接頭子Isを使う、という差異があります。 Unicodeスクリプトとブロックの違いがビミョーに見えるけど、ブロックがコードブロックをゴリッと指定したものに対して、スクリプトは特定言語に関係する文字の種類を直接指定するものなのでブロックよりも断定的、って感じで見れば良かなと。ちなみにUnicode関連のドキュメントによるとUnicodeプロパティとスクリプトで日語の文章を表そうとすると m/(?:(?:\p{Hiragana}|\p{Katakana}|\p{Han}|\p{Latin}|\p{Common}) (?:\p{Inherited}|\p{Me}|\p{Mn})?)+/x; こんな感じになるそうな。実際流通している文章はこれより多様なので現実とは微妙に乖離

  • 正規表現で Unicode Block - odz buffer

    ref:神様なんて信じない僕らのために - すべての漢字を取り出す正規表現 そういや、Python の正規表現エンジンって、named group は使えるけど、Unicode Block は使えないんだっけ? PerlJava なら Unicode Block が使える。 use strict; use warnings; use utf8; use Perl6::Say; binmode STDOUT, ':utf8'; my $target = "漢字正規表現亜腕一十百千万億兆京?"; my @patterns = ( qr/[一-龠]/, qr/?p{InCJKUnifiedIdeographs}/, qr/?p{InCJKUnifiedIdeographs}|?p{InCJKUnifiedIdeographsExtensionA}|?p{InCJKUnifiedIdeogr

    正規表現で Unicode Block - odz buffer
  • Unicodeで「漢字」の正規表現 – ものかの

    改訂:2017/07/22 Unicode 10.0に合わせて書き直し。正規表現を簡易にしようとしてやりすぎていたのを修正。 改訂:2023/03/21 U+30000以降を追加。InDesignの正規表現を追記。 正規表現で漢字の範囲指定をする場合、Unicodeではどうするかが悩ましいところです。 Unicodeの漢字の範囲として [一-龠] にしている例を見かけます。しかしこれは旧規格JIS X 0208の漢字が含まれる範囲をUnicodeの中から切り出しているだけです。互換漢字ブロックをまるごと取りこぼしているので、WindowsのシフトJIS(CP932)の拡張漢字に当たるものが含まれていません。現規格JIS X 0213の第3・第4水準漢字も考慮されていません。簡易な範囲指定だとしても、新常用漢字の「𠮟」が含まれておらず、今から見るとあまりに時代遅れです。 Unicodeのす

    Unicodeで「漢字」の正規表現 – ものかの
  • UnicodeとUTF-8の違いは? - Humanity

    という2chのスレがかなり勉強になったのでまとめ。 少しでも有用だと思ったものは載せてあるので結構長いです。 Unicodeのような文字集合(符号化文字集合?)やUTF-8のようなエンコーディング方式に限らず色んな文字コードにまつわる話があります。 たびたび話が繰り替えされますがそれは確認ということで。 (元スレ) 追記:簡単にまとめました。 1 :デフォルトの名無しさん:2007/04/30(月) 20:02:37 ビッグインディアンとかなんとかかんとか 3 :デフォルトの名無しさん:2007/04/30(月) 20:05:48 また、頭の悪そうなスレが・・・ >>1 それは魚とマグロの違いを訊ねるようなもんだ。 4 :デフォルトの名無しさん:2007/04/30(月) 20:06:49 魚と鮪というよりは、魚と刺身の違いのような気がする。 5 :デフォルトの名無しさん:2007/04/

    UnicodeとUTF-8の違いは? - Humanity
  • 1