Java之将GB2312编码转化为汉字

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

  • 01-09区为特殊符号。
  • 16-55区为一级汉字,按拼音排序。
  • 56-87区为二级汉字,按部首/笔画排序。
  • 10-15区88-94区则未有编码。

注:

  • ”字是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。

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

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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值