检测字符是简化还是繁体中文字符

the*_*gah 9 unicode cjk

我发现这个问题让我能够检查字符串是否包含中文字符.我不确定unicode范围是否正确但是它们似乎对日语和韩语都是假的,对中文来说是真的.

它没有做的是判断角色是传统的还是简体中文.你怎么会发现这个?


更新

问:如果这是一个中文,韩文或日文字符,我如何识别Unicode字符的32位值?

http://unicode.org/faq/han_cjk.html

他们认为角色无论形状如何都具有相同的含义,因此应该用相同的代码来表示.嗯,这对我来说没有意义,因为我正在分析与他们的解决方案无关的个别角色:

一个更好的解决方案是整个文本:如果有相当数量的假名,它可能是日语,如果有相当数量的韩语,它可能是韩语.

jpa*_*kal 5

如前所述,您无法从单个字符可靠地检测脚本样式,但可以使用足够长的文本样本.有关执行此任务的Ruby gem以及简体中文Unicode表,请参阅https://github.com/jpatokal/script_detector以进行一般性讨论.


dda*_*dda 5

某些字符是可能的。繁体和简体字符集重叠,因此您基本上拥有三组字符:

  1. 只有传统的字符。
  2. 仅简化的字符。
  3. 保持不变的字符,并且在两者中都可用。

拿性格?例如。它既属于#2 又属于#3... 作为简体字,它代表? 、 脸和面条。然而 ?只是一个传统字符。那么在 Unihan 数据库中, ? 有kSimplifiedVariant,指向. 所以你可以推断它只是一个繁体字。

但是也有一个kTraditionalVariant,指向哪个. 这就是系统崩溃的地方:如果您使用此数据来扣除?只是一个简化字符,你错了...

另一方面,? 有一个kTraditionalVariant,指向? ,这两个是“真正的”简化/传统对。但是 Unihan 数据库中没有像 ?/? 从像 ?/? 这样的情况。


Tom*_*son 2

我想你已经发现了,你不能。简体字和繁体字只是相同字符的两种书写方式——就像欧洲语言的罗马文字和哥特文字之间的区别一样。