java抽取文件中的简体中文

来源:互联网 发布:plc 单片机 区别 编辑:程序博客网 时间:2024/06/05 19:24

java判断Unicode编码形式的文件中的汉字的例子很多,但是判断gb2312编码形式的文件中的汉字的例子很少,从网上找来一个共享一下,试验过,很好用。目的是判断gb2312编码形式的文件中的汉字,这里指的汉字不包括中文标点符号等01-09区中的特殊符号等。

public   static   boolean   isCS(String   str){
        if(null==str)   return   false;
        if(str.trim()== " ")   return   false;
        byte[]   bytes=str.getBytes();
        if(bytes.length <2)
         return   false;
        byte   aa=(byte)0xB0;
        byte   bb=(byte)0xF7;
        byte   cc=(byte)0xA1;
        byte   dd=(byte)0xFE;
        if(bytes[0] >=aa   &&   bytes[0] <=bb){ //高字节
         if(bytes[1] <cc   ||   bytes[1]   >   dd){ //低字节
          return   false;
         }
         return   true;
        }
        return   false;
}

给参数str赋值:str="、啊任何人决。〔比照〕年制定"

输出结果为:

、false
啊true
任true
何true
人true
决true
。false
〔false
比true
照true
〕false
年true
制true
定true

 

结果分析:该程序实现了判断中文字,但是对于中文标的符号等都进行了过滤。

//String UnicodeChineseChar = "[\u4e00-\u9fa5]"; 

//String GB2312ChineseChar = "[\xb0-\xf7][\xa0-\xfe]"

[\xb0-\xf7]|[\xa0-\xfe]
gb2312一二级汉字区“高位字节”的范围是0xB0-0xF7,“低位字节”的范围是0xA1-0xFE

 

GB2312补充知识:

GB 2312中对所收汉字进行了“分区”处理,每区含有94个汉字/符号。这种表示方式也称为区位码。

  01-09区为特殊符号。

  16-55区为一级汉字,按拼音排序。

  56-87区为二级汉字,按部首/笔画排序。

  10-15区及88-94区则未有编码。

 

“高位字节”使用了0xA1-0xF7(把01-87区的区号加上0xA0),“低位字节”使用了0xA1-0xFE(把01-94加上 0xA0)。 由于一级汉字从16区起始,汉字区的“高位字节”的范围是0xB0-0xF7,“低位字节”的范围是0xA1-0xFE,占用的码位是 72*94=6768。其中有5个空位是D7FA-D7FE