0

質問: 特定の UTF ファイルにアジア文字が含まれているかどうかを確認する簡単な方法はありますか? UTF-8 と UTF-16 の両方で動作するようになれば素晴らしいと思います。一般的なアルゴリズムの代わりに ruby​​ を使用するとなお良いでしょう。

編集: 私が CJK について学んだコメントによって、それは私が探しているものである可能性が最も高いです。

では、UTF ファイルに CJK 文字が含まれているかどうかをテストする方法はありますか?

4

1 に答える 1

3

これは車輪の再発明かもしれませんがunpack('U*')、任意の文字列から Unicode コードポイントを取得するために使用できます。IE

   codepoints = '㌂'.unpack('U*').first
    => 13058 

次に、.any? を使用できます。

 codepoints.any?{|c| overlaps_cjk?(c)}

http://graphemica.com/blocksから「アジア文字」と見なすすべての目的のコードポイント ブロックを取得することで派生できるoverlaps_cjk 関数

例えば:

 CJK_CODEPOINTS = [(13000..13500)]
 def overlaps_cjk?(codepoint)
   CJK_CODEPOINTS.any?{|range| range.cover?(codepoint)}
 end
于 2013-04-29T18:10:46.403 に答える