问题:是否有一种简单的方法可以发现给定的UTF文件是否包含亚洲字符?如果适用于UTF-8和UTF-16,那将会很棒。更好的是,如果使用ruby而不是通用算法。
编辑: 根据我对CJK的评论,这很有可能是我正在寻找的。 p>
那么,有没有办法测试UTF文件是否有CJK字符?
答案 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