Java将GB2312编码转化为汉字

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_36347817/article/details/88300120

本文实现将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)

猜你喜欢

转载自blog.csdn.net/qq_36347817/article/details/88300120