java 中文转gb2312_Java将GB2312编码转化为汉字

本文实现将GB2312编码转换成汉字,并简单了解一下GB2312。

GB2312是信息交换汉字编码字符集,适用于汉字处理、汉字通信等系统之间的信息交换,通行于中国大陆。使用区位码表示方式,对所收汉字进行了“分区”处理,每区含有94个汉字/符号。

01-09区为特殊符号。

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

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

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

EG:“啊”字是GB2312之中的第一个汉字,它的区位码就是1601。

注:每个汉字及符号以两个字节来表示。

将GB2312编码转化为汉字:

public void App() throws Exception{

String string = "CCB8B9FAC6BD";

String result = stringToGbk(string);

System.out.println(result);

}

//将gbk编码转换成汉字

public String stringToGbk(String string) throws Exception{

byte[] bytes = new byte[string.length() / 2];

for(int i = 0; i < bytes.length; i ++){

byte high = Byte.parseByte(string.substring(i * 2, i * 2 + 1), 16);

byte low = Byte.parseByte(string.substring(i * 2 + 1, i * 2 + 2), 16);

bytes[i] = (byte) (high << 4 | low);

}

String result = new String(bytes, "gbk");

return result;

}

第一个字节称为“高位字节”(也称“区字节)”,第二个字节称为“低位字节”(也称“位字节”)。

“高位字节”使用了0xA1-0xF7(把01-87区的区号加上0xA0),“低位字节”使用了 0xA1-0xFE(把01-94加上 0xA0)。

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

EG:“啊”字以两个字节,0xB0(第一个字节) 0xA1(第二个字节)储存。

区位码=区字节+位字节(与区位码对比:0xB0=0xA0+16,0xA1=0xA0+1)

你可能感兴趣的:(java,中文转gb2312)