【问题标题】:How to tell if a UTF-8 file has asian characteres?如何判断 UTF-8 文件是否包含亚洲字符?
【发布时间】:2013-04-23 11:44:19
【问题描述】:

问题:有没有一种简单的方法可以发现给定的 UTF 文件是否有亚洲字符?如果它同时适用于 UTF-8 和 UTF-16,那就太好了。如果使用 ruby​​ 而不是通用算法,那就更好了。

编辑: 通过我了解 CJK 的 cmets,这很可能是我正在寻找的。​​p>

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

【问题讨论】:

  • 为什么要投反对票?为什么关了?评论?
  • 定义亚洲字符。哪些语言属于,哪些语言不属于?
  • 顺便说一句,我没有投反对票,也没有投票结束。
  • 现在这个问题看起来很有效,但为了提供信息,您对“亚洲字符”的定义非常随意。没有人会将这两种语言的集合称为亚洲语言。有一组与之相近的语言,称为“东亚语言”,有时缩写为 CJK,包括中文、日文和韩文。
  • @sawa 实际上 CJK 会很好用

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


【解决方案1】:

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

   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

【讨论】:

  • 谢谢,似乎正是我想要的。
猜你喜欢
  • 2014-03-16
  • 1970-01-01
  • 2020-08-26
  • 2018-09-03
  • 2012-01-24
  • 1970-01-01
  • 1970-01-01
  • 2011-09-20
  • 2012-11-11
相关资源
最近更新 更多