汉字编码之GBK编码详解
汉字编码之GBK编码详解
GBK(Guo Biao Kuozhan,国家标准扩展)是一种中文字符编码标准,主要用于简体中文的字符表示。它是对GB2312-80标准的扩展,包含了更多的汉字和符号,广泛应用于Windows系统、网页、数据库等中文信息处理环境中。
一、GBK 编码的基本背景
1. GB2312 简介
- GB2312 是中国大陆于1980年发布的第一个汉字编码标准。
- 包含 6763 个常用汉字(一级 3755 个,二级 3008 个),以及 682 个标点符号、数字、拉丁字母等。
- 使用双字节编码方式,每个汉字用两个字节表示。
- 字节范围:首字节
0xB0-0xF7
,尾字节0xA1-0xFE
。
2. GBK 的提出
- 随着使用需求的增加,GB2312 中的汉字数量不足以满足实际应用。
- 于是微软在 Windows 系统中推出 GBK 编码,作为对 GB2312 的兼容性扩展。
- GBK 并非正式国家标准,但后来被收录进 GB/T 13000.1-1993(即 Unicode 的中国对应标准)中,并最终被 GB18030 所取代。
二、GBK 编码的特点
特性 | 描述 |
---|---|
编码类型 | 双字节编码(部分单字节 ASCII 兼容) |
支持字符数 | 约 21003 个汉字(包括繁体字、少数民族文字等) |
向后兼容 | 完全兼容 GB2312 和 ASCII |
应用环境 | Windows 简体中文系统、早期网页、数据库、邮件等 |
三、GBK 编码结构
GBK 编码空间为:
- 首字节范围:
0x81-0xFE
- 尾字节范围:
0x40-0x7E
(共 63 个)0x80-0xFE
(共 127 个)
总共可以表示 (0xFE - 0x81 + 1) * (63 + 127)
= 大约 21000+ 个字符。
GBK 编码分为多个区段(Zone),如下所示:
区号 | 范围(首字节, 尾字节) | 内容说明 |
---|---|---|
1 | 8140-FEFE | GB2312 原有字符(向后兼容) |
2 | A1A1-A9FE | 符号、部首、特殊字符 |
3 | B0A1-F7FE | GB2312 区段,包含常用汉字 |
4 | 7440-7D7E | 增补汉字(如“镕”、“堃”) |
5 | A6A1-A6FE | 希腊字母、俄语字母等 |
6 | AD00-AD7E | 日文平假名 |
7 | FA40-FEFE | 扩展汉字(包括生僻字、少数民族文字等) |
四、GBK 与常见编码的比较
编码格式 | 支持字符数 | 是否支持繁体 | 是否支持生僻字 | 是否兼容 ASCII | 备注 |
---|---|---|---|---|---|
ASCII | 128 | 否 | 否 | 是 | 英文字符集 |
GB2312 | ~6763 | 否 | 否 | 是 | 简体中文基础 |
GBK | ~21003 | 是 | 是 | 是 | GB2312 扩展 |
GB18030 | > 70,000 | 是 | 是 | 是 | 国家标准,兼容 GBK |
Unicode (UTF-8/UCS-2) | > 100,000 | 是 | 是 | 是(UTF-8) | 国际通用编码 |
五、GBK 编码的应用现状
虽然目前 UTF-8 已成为互联网主流编码格式,但 GBK 在以下场景仍有广泛应用:
- Windows 简体中文系统:默认编码是 GBK。
- 旧系统的数据迁移:许多遗留系统仍使用 GBK 编码保存历史数据。
- 网页开发中的传统网站:一些老网站仍然使用 GBK 编码。
- 数据库导出文件:如 MySQL 导出时设置为 GBK 编码。
六、GBK 编码示例
汉字 | GBK 编码(十六进制) | 十进制表示 |
---|---|---|
我 | CED2 | 0xCED2 |
是 | CAC7 | 0xCAC7 |
学 | D1A7 | 0xD1A7 |
生 | C9FA | 0xC9FA |
例如,“我是学生”的 GBK 编码为:
CED2 CAC7 D1A7 C9FA
七、如何识别或转换 GBK 编码?
1. 使用 Python 进行编码转换
# 读取 GBK 编码文件
with open('file.txt', 'r', encoding='gbk') as f:content = f.read()print(content)# 字符串转 GBK 编码
s = "你好"
print(s.encode('gbk')) # b'\xc4\xe3\xba\xc3'# GBK 编码转字符串
b = b'\xc4\xe3\xba\xc3'
print(b.decode('gbk')) # 输出:你好
2. 使用在线工具
- https://www.qqxiuzi.cn/zh/hanzi-gbk.php
- https://tool.oschina.net/encode
八、总结
项目 | 内容 |
---|---|
名称 | GBK(国标扩展) |
类型 | 双字节编码 |
支持字符 | 约 21003 个 |
向后兼容 | GB2312、ASCII |
替代方案 | GB18030、UTF-8 |
主要用途 | Windows 简体中文、旧系统数据、网页等 |