如何判断UTF-8文件是否包含亚洲字符?

时间:2013-04-29 17:40:11

标签: ruby encoding utf-8 utf-16 file-io

问题:是否有一种简单的方法可以发现给定的UTF文件是否包含亚洲字符?如果适用于UTF-8和UTF-16,那将会很棒。更好的是,如果使用ruby而不是通用算法。

编辑: 根据我对CJK的评论,这很有可能是我正在寻找的。

那么,有没有办法测试UTF文件是否有CJK字符?

1 个答案:

答案 0 :(得分:3)

这可能会重新发明轮子,但您可以使用unpack('U*')从任何字符串中获取unicode代码点。 IE

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

然后你可以使用.any?

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

您可以通过从http://graphemica.com/blocks

获取您认为是“亚洲字符”的所有所需代码点块来派生的overlapps_cjk函数

例如:

 CJK_CODEPOINTS = [(13000..13500)]
 def overlaps_cjk?(codepoint)
   CJK_CODEPOINTS.any?{|range| range.cover?(codepoint)}
 end