带你读《全景揭秘字符编码》之九:九、常见字符编码3:GB系列(5)

简介: 带你读《全景揭秘字符编码》之九:九、常见字符编码3:GB系列(5)

带你读《全景揭秘字符编码》之九:九、常见字符编码3:GB系列(4) https://developer.aliyun.com/article/1240899?groupCode=tech_library


9.3、GBK


GBK即“国标扩展”的意思,因为GB2312双字节的最高位都要求大于1,上限也不会超过1万个字符,所以对此进行了扩展,对GB2312的字符不重新编码直接沿用,因此完全兼容GB2312。


GBK虽然也是双字节编码,但是只要求第一个字节大于 127 就固定表示这是一个汉字的开始,正因为如此,GBK的编码空间比GB2312大很多。


GBK 整体编码范围为 8140-FEFE,首字节在 81-FE 之间,尾字节在 40-FE 之间,剔除 xx7F 一条线,总计 23940 个码位,共收入 21886 个汉字和图形符号。其中 GBK/1 收录除 GB 2312 字符外的其他增补字符,GBK/2 收录 GB2312 字符,GBK/3 收录 CJK 字符,GBK/4 收录 CJK 字符和增补字符,GBK/5 为非中文字符,UDC 为用户自定义字符。


详细如下如所示:


这里大家可能会有两个疑问:为什么尾字节要从40开始,而不是00开始?为什么要排除 FF、xx7F这两条线的编号?


GBK的尾字节编码高位没有强制要求是1,当高位是0时跟ASCII码是冲突的,ASCII码里00-40之间大部分都是控制字符,所以排除控制字符主要是为了防止丢失高字节导致出现系统性严重后果。


排除FF是为了兼容GB2312,GB2312这个位是保留不使用的;而7F表示DEL字符就是向后删除一个字符,如果传输过程中丢失首字节那么就会出现严重的后果,所以需要将xx7F也排除,这是所有编码方案都需要注意的地方。



带你读《全景揭秘字符编码》之九:九、常见字符编码3:GB系列(6) https://developer.aliyun.com/article/1240896?groupCode=tech_library

相关文章
|
3月前
|
缓存 运维 监控
当你的 Agent 会“多轮思考”,Trace 却还停留在单轮:阿里云 CMS OpenClaw 可观测插件升级
阿里云 OpenClaw 可观测插件新版本上线!解决行业通病,还原完整链路信息:多轮 LLM 分段还原真实决策链路、STEP Span 让"第几轮"可观测、并发断链/串链显著修复、AGENT 指标稳定可量化。从"有图可看"升级到"支撑决策",排障、成本治理、并发验证全面提效。
488 31
|
消息中间件 监控 算法
用Apifox调试Socket.IO接口,从原理到实践
传统HTTP协议"请求-响应"的离散式通信机制已难以满足需求,这正是Socket.IO这类实时通信框架的价值所在。
用Apifox调试Socket.IO接口,从原理到实践
|
机器学习/深度学习 Python
拯救数据不平衡:imbalanced-learn库详解
当你的数据像翘翘板一样严重倾斜时,该如何挽救你的机器学习模型?本文详解imbalanced-learn库的四大绝招,帮你轻松应对数据不平衡问题,提升模型性能。
714 8
|
Rust 网络协议 应用服务中间件
granian:让你的 Web 应用程序快如闪电
granian:让你的 Web 应用程序快如闪电
1369 2
|
Python
Matplotlib 教程 之 Matplotlib 绘图标记 2
在 Matplotlib 中使用 `plot()` 方法的 `marker` 参数来自定义图表标记。通过不同符号如 `"o"`(实心圆)、`"v"`(下三角)等,可实现多样化的标记效果。示例展示了实心圆标记的使用方法,提供了多种标记符号供选择,包括几何形状和特殊符号。
621 0
|
存储 JavaScript 安全
Web安全之XSS跨站脚本攻击
XSS(跨站脚本攻击)
542 7
|
Ubuntu Linux
服务器硬件 做raid操作 ubuntu linux做raid
服务器硬件 做raid操作 ubuntu linux做raid
662 0
|
弹性计算 安全 数据中心
阿里云香港服务器提供高性能、安全、CN2高速网络、BGP多线精品
阿里云香港服务器提供高性能、安全、CN2高速网络、BGP多线精品
1464 0
|
JavaScript
【Vue3】Props的使用详解
【Vue3】Props的使用详解