你的输入是什么编码的? 你的 GB 表,GBK 表是什么编码的?或者说是什么样子的?
//GBK汉字内码范围(不包括A1xx~A9xx的标点符号英文字母特殊符号等) //区码 ,位码 //81-A0 ,40-7E 80-FE //AA-AF ,40-7E 80-A0 //B0-D6 ,40-7E 80-FE //D7 ,40-7E 80-F9 //D8-F7 ,40-7E 80-FE //F8-FE ,40-7E 80-A0
如果你想表达的是想找出含有汉字的行的话,请参考 http://www.unicode.org/charts/ 4E00 - 9FD5 CJK Unified Ideographs (Han) (这是你列的那个区间) 3400 - 4DB5 CJK Extension-A 20000-2A6D6 CJK Extension B 2A700-2B734 CJK Extension C 2B740-2B81D CJK Extension D 2B820-2CEA1 CJK Extension E F900 -FAD9 CJK Compatibility Ideographs 2F800-2FA1D CJK Compatibility Ideographs Supplement 一般前两个,或者再加上 CJK Compatibility 就差不多了。
这些在 Unicode 里都不一定是一个区间,而可能是一些离散的点。特别是 GB 。 既然你已经有表了,那把所有的码位拍一下序不就有区间了? 排序之后,有更快的查找方式,比如二分,不需要遍历。 还可以用哈希表或者 bitmap 实现(接近)常数时间的查找。
首先,GBK的范围要比unicode CJK部分更大。 编码范围: GB有好几个版本,GB2312、GB13000、 GB18030,编码范围不一样的,如果是最基本的GB2312-80,那么编码范围高字节A1~FE(其中汉字部分A1~F7)、低字节A1~FE。 GBK的编码范围高字节81~FE、低字节40~FE,去掉其中编码**7F的126个。
64,637
社区成员
250,559
社区内容
加载中
试试用AI创作助手写篇文章吧