Ruby 如何确定一个字符是否为汉字

Ruby 如何确定一个字符是否为汉字,ruby,unicode,encoding,cjk,character-properties,Ruby,Unicode,Encoding,Cjk,Character Properties,如何使用ruby确定字符是否为汉字?ruby 1.9 #encoding: utf-8 "漢" =~ /\p{Han}/ 一篇关于Ruby编码的有趣文章:(这是一系列文章的一部分——也请检查文章开头的目录) 我以前没有使用过汉字,但这似乎是unicode支持的列表:。还需要注意的是,它是一个统一的系统,包括日语和韩语字符(其中一些字符是共享的)-不确定您是否能够区分哪些字符仅为中文 我认为您可以通过调用字符串str和索引为n的字符来检查它是否是CJK字符: def check_char

如何使用ruby确定字符是否为汉字?

ruby 1.9

#encoding: utf-8   
 "漢" =~ /\p{Han}/

一篇关于Ruby编码的有趣文章:(这是一系列文章的一部分——也请检查文章开头的目录)

我以前没有使用过汉字,但这似乎是unicode支持的列表:。还需要注意的是,它是一个统一的系统,包括日语和韩语字符(其中一些字符是共享的)-不确定您是否能够区分哪些字符仅为中文

我认为您可以通过调用字符串str和索引为n的字符来检查它是否是CJK字符:

def check_char(str, n)
  list_of_chars = str.unpack("U*")
  char = list_of_chars[n]
  #main blocks
  if char >= 0x4E00 && char <= 0x9FFF
    return true
  end
  #extended block A
  if char >= 0x3400 && char <= 0x4DBF
    return true
  end
  #extended block B
  if char >= 0x20000 && char <= 0x2A6DF
    return true
  end
  #extended block C
  if char >= 0x2A700 && char <= 0x2B73F
    return true
  end
  return false
end
def check_char(str,n)
列表中的字符=str.unpack(“U*”)
char=字符列表[n]
#主要区块

如果char>=0x4E00&&char=0x3400&&char=0x20000&&char=0x2A700&&char,我使用此代码,但它无法工作。这是错误信息:无效的字符属性名{Han}:/\p{Han}/@HelloWorld:更新您的Ruby版本。所有字符类现在都有文档记录:(cool nick,BTW)上面的链接已断开,但您可以在ruby文档中找到regexp的所有信息:如果您得到“无效字符属性名{Han}”,您有时可以通过添加/u:
来解决此问题漢" =~ /\p{Han}/u
@sam它们是CJK范围。这些是中文、日文和韩文字符(假设范围是正确的,我相信它们是正确的)@Michael Lowman,我用朝鲜语、日语和所有1..9 a..z测试的一些字符返回false,更不用说中文返回true了。我如何检查字符是繁体还是简体。还有,这些范围从何而来。unihan?什么特定页面?在提到的维基百科页面上,每个块有一个包含字符的图表列表。我使用了这些范围。有可能区分传统形式和简化形式吗?它们的笔划通常比片假名或平假名多。而且通常只应在更复杂的汉字上使用ruby…等等,这是日语的.SE还是堆栈溢出?