判断字符是否为简体字或繁体字
判断一个字符是简体字还是繁体字。 Unicode 范围 开始以为可以用 Unicode 范围来表示,了解后发现简繁之间在 Unicode 字符集中位置存在交集,并且不是连续的,没办法用这种方法搞定。 如果真要靠这种办法,需要在茫茫字表中进行超级详细和繁杂的范围指定。 看到叶典网有一个字符集范围,但没有区分简繁。 Golang 也有一个 unicode.Han,也没有区分简繁。 Unihan_Variants.txt 在 http://www.unicode.org/Public/UCD/latest/ucd/ 下载 Unihan.zip,打开里面的 Unihan_Variants.txt。 比如「战斗」的「斗」(繁体是「鬥」)这两行: 「斗」是 U+6597,「鬥」是 U+9B25。 U+6597 kTraditionalVariant U+9B25 U+9B25 kSimplifiedVariant U+6597 kTraditionalVariant 前面是简体专用,后面是繁体专用; kSimplifiedVariant 前面是繁体专用,后面是简体专用。 另外有「后U+540E、後U+5F8C」这种的字,「皇后」是简繁体通用,但表示 behind 时,简体用「后面」,繁体用「後面」。 所以就有以下这些行: U+540E kSimplifiedVariant U+540E U+5F8C kSimplifiedVariant U+540E U+540E kTraditionalVariant U+540E U+5F8C ------- 翻译一下: ------- 后 kSimplifiedVariant 后 後 kSimplifiedVariant 后 后 kTraditionalVariant 后 後 这种一对多、多对一的转换,除了「后/後」,还有「干/幹」等。 还有 kSpecializedSemanticVariant 这种「井/丼」的。 还有 kSpoofingVariant 这种欺骗性变体,比如「胶 U+80F6」和「㬵 U+3B35」不是同一个字。 参照 http://www....