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 回答