问题:有没有一种简单的方法来发现给定的 UTF 文件是否有亚洲字符?如果它同时适用于 UTF-8 和 UTF-16,那就太好了。如果使用 ruby 而不是通用算法,那就更好了。
编辑:通过我了解 CJK 的评论,这很可能是我正在寻找的。
那么,有没有办法测试 UTF 文件是否有 CJK 字符?
这可能是在重新发明轮子,但您可以使用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