汉字编码之GBK编码详解

汉字编码之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),如下所示:

区号范围(首字节, 尾字节)内容说明18140-FEFEGB2312 原有字符(向后兼容)2A1A1-A9FE符号、部首、特殊字符3B0A1-F7FEGB2312 区段,包含常用汉字47440-7D7E增补汉字(如“镕”、“堃”)5A6A1-A6FE希腊字母、俄语字母等6AD00-AD7E日文平假名7FA40-FEFE扩展汉字(包括生僻字、少数民族文字等)

四、GBK 与常见编码的比较

编码格式支持字符数是否支持繁体是否支持生僻字是否兼容 ASCII备注ASCII128否否是英文字符集GB2312~6763否否是简体中文基础GBK~21003是是是GB2312 扩展GB18030> 70,000是是是国家标准,兼容 GBKUnicode (UTF-8/UCS-2)> 100,000是是是(UTF-8)国际通用编码

五、GBK 编码的应用现状

虽然目前 UTF-8 已成为互联网主流编码格式,但 GBK 在以下场景仍有广泛应用:

Windows 简体中文系统:默认编码是 GBK。旧系统的数据迁移:许多遗留系统仍使用 GBK 编码保存历史数据。网页开发中的传统网站:一些老网站仍然使用 GBK 编码。数据库导出文件:如 MySQL 导出时设置为 GBK 编码。

六、GBK 编码示例

汉字GBK 编码(十六进制)十进制表示我CED20xCED2是CAC70xCAC7学D1A70xD1A7生C9FA0xC9FA例如,“我是学生”的 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.phphttps://tool.oschina.net/encode

八、总结

项目内容名称GBK(国标扩展)类型双字节编码支持字符约 21003 个向后兼容GB2312、ASCII替代方案GB18030、UTF-8主要用途Windows 简体中文、旧系统数据、网页等

你可能也喜欢

台山黑沙湾在哪_台山黑沙湾
beat365中文官网

台山黑沙湾在哪_台山黑沙湾

📅 09-03 👀 9312
嗨钱提现中多久到账岁月如歌2024-09-24 23:14:06
beat365中文官网

嗨钱提现中多久到账岁月如歌2024-09-24 23:14:06

📅 10-08 👀 9225
如何使用 NVIDIA ShadowPlay 录制屏幕:分步指南 (2024)
36500365体育在线投注

如何使用 NVIDIA ShadowPlay 录制屏幕:分步指南 (2024)

📅 08-14 👀 5185
推流是什么,直播为什么要推流
beat365中文官网

推流是什么,直播为什么要推流

📅 10-12 👀 2649
‎塞尔达助手
beat365中文官网

‎塞尔达助手

📅 10-01 👀 3646
鸩全新典藏皮肤「洛神缋」7月18日登场!
36500365体育在线投注

鸩全新典藏皮肤「洛神缋」7月18日登场!

📅 10-27 👀 7405