gb3212java判断_java判断gb2312编码文件中的汉字问题

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]

 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。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值