GBK编码的单字节与双字节
gbk编码分两部分,一部分是单字节编码,另一部分是双字节编码。
gbk编码中,前128个编码都是单字节编码。单字节编码从00-7F,与ASCII相对应。
在单字节编码之后就是双字节编码。第一个字节范围是81-FE。第二字节的一部分领域在40–7E,其他领域在80–FE。
这样可以通过第一个字节就可以判断是单字节编码还是双字节编码。
双字节编码区又分为5部分
范围 第1字节第2字节 编码数字数 内容GBK/1 A1–A9A1–FE 846717GB2312非汉字符号GBK/2 B0–F7A1–FE 6,7686,763 GB2312 汉字GBK/3 81–A040–FE(7F除外)6,0806,080 扩充汉字GBK/4 AA–FE40–A0(7F除外)8,1608,160 扩充汉字GBK/5 A8–A940–A0(7F除外)192166扩充非汉字用户定义 AA–AFA1–FE 564用户定义 F8–FEA1–FE 658用户定义 A1–A740–A0(7F除外)672合计:23,94021,886
GBK1-GBK5具体内容
GBK1[GB2312非汉字符号]
GBK2[GB2312 汉字]
GBK3[扩充汉字]
GBK4[扩充汉字]
GBK5[扩充非汉字]
五部分分布示意图:
GBK编码计算方法
$word = mb_convert_encoding("一",'gbk','utf8');$high = ord($word[0]);$low = ord($word[1]);$code = $high*256 + $low;echo dechex($code);
汉字编码范围
0xB0A1 - 0xF7FE gb2312汉字 GBK2
0x8140 - 0xA0FE 扩充汉字 GBK3
0xAA40 - 0xFEA0 扩充汉字 GBK4