Интересная статья о кодировках в Ruby: http://blog.grayproductions.net/articles/bytes_and_characters_in_ruby_18 (это часть серии - проверьте оглавление также в начале статьи)
Я раньше не использовал китайские иероглифы, но, похоже, это список, поддерживаемый юникодом: http://en.wikipedia.org/wiki/List_of_CJK_Unified_Ideographs. Также обратите внимание, что это единая система, включающая японские и корейские символы (некоторые символы разделены между ними) - не уверен, что вы можете различить, какие только китайские.
Я думаю, что вы можете проверить, является ли это символом CJK, вызвав это для строки str и символа с индексом n:
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