目录
一、ASCII 码(基础字符集)
1. 定义
2. 编码规则
3. 特点 & 抓包场景
示例
二、Unicode(统一字符集 / 字符编号)
1. 定义
2. 核心概念:码点(Code Point)
3. 范围
4. 关键误区(抓包必懂)
三、UTF-8(互联网主流编码,抓包 90% 都是它)
1. 定义
2. 核心特点
3. 编码规则(重点,解密 / 字节分析必备)
4. 实操示例(中文转 UTF-8 字节)
5. 抓包 & 开发场景
四、Base64(抓包 / 解密 / 逆向高频编码)
1. 定义
2. 核心原理
规则
字节对应关系
3. 补位规则(抓包看末尾 = 必懂)
4. 标准码表(64 个字符)
5. 关键区分:编码 ≠ 加密
6. 实战场景(抓包 / 解密)
7. 极简代码示例(常用语言)
Python
JavaScript(前端抓包调试)
五、四大编码横向对比(抓包快速区分)
六、抓包排错 & 解密经验总结
结合原理、编码规则、区别、抓包场景用法、加解密实操讲解,适合网络抓包、接口分析、字符串逆向解密使用。
一、ASCII 码(基础字符集)
1. 定义
American Standard Code for Information Interchange,美国信息交换标准代码,最早的单字节字符编码。
- 仅表示英文字母、数字、英文符号、控制字符,不支持中文、日文等非英文字符。
2. 编码规则
- 占用:1 字节(8 bit),实际只用低 7 位,最高位固定为 0
- 取值范围:0 ~ 127(十进制),共 128 个字符
- 0~31、127:控制字符(回车、换行、退格、响铃等,抓包里常看到 \\r \\n)
- 32:空格
- 48~57:数字 0-9
- 65~90:大写字母 A-Z
- 97~122:小写字母 a-z
- 其余:英文标点、符号
3. 特点 & 抓包场景
示例
字符 A → 十进制 65 → 二进制 01000001 字符 0 → 十进制 48
二、Unicode(统一字符集 / 字符编号)
1. 定义
ASCII 只能表示英文,全球语言无法统一,因此诞生 Unicode(万国码)。 核心定位:给全世界所有字符分配唯一「数字编号(码点)」,不是具体存储编码。 简单理解:
Unicode = 字符字典(每个字符对应一个唯一 ID) UTF-8/UTF-16/UTF-32 = 把 ID 转成二进制字节的存储方案
2. 核心概念:码点(Code Point)
每个字符对应一个十六进制码点,格式:U+xxxx
- 例:
- 英文字母 A:U+0041
- 中文 中:U+4E2D
- 中文 国:U+56FD
3. 范围
目前 Unicode 覆盖十几万字符:汉字、日文、韩文、表情、特殊符号、古文字等。
4. 关键误区(抓包必懂)
Unicode ≠ UTF-8
- Unicode:只是字符的编号,不规定怎么存成字节。
- UTF-8/UTF-16:是 Unicode 的实现 / 存储编码。
三、UTF-8(互联网主流编码,抓包 90% 都是它)
1. 定义
UTF-8 = Unicode Transformation Format – 8bit 目前互联网、HTTP 接口、网页、APP 抓包、JSON、日志的默认编码,兼容性最强。
2. 核心特点
- 变长编码:1~4 个字节动态存储,按需分配长度
- 完全兼容 ASCII:ASCII 字符在 UTF-8 中仍占 1 字节,老式系统无缝兼容
- 无字节序问题(不需要 BOM 头),网络传输首选
3. 编码规则(重点,解密 / 字节分析必备)
UTF-8 通过高位标识区分当前字符占用几个字节,规则固定:
1 字节字符(ASCII 区) 二进制开头:0xxxxxxx 范围:U+0000 ~ U+007F(所有英文、数字、符号) 👉 和 ASCII 完全一致
2 字节字符(常用拉丁文、少量符号) 首字节:110xxxxx 后续字节:10xxxxxx
3 字节字符(绝大多数中文、日文、韩文、全角符号) 首字节:1110xxxx 后续字节:10xxxxxx 中文全部落在 3 字节区间,抓包看到中文一定是 3 字节一组。
4 字节字符(emoji、生僻古汉字、特殊符号) 首字节:11110xxx 后续字节:10xxxxxx
4. 实操示例(中文转 UTF-8 字节)
字符:中
5. 抓包 & 开发场景
四、Base64(抓包 / 解密 / 逆向高频编码)
1. 定义
Base64 是二进制 → 可打印文本的编码方式,不是加密算法(可逆、无密钥)。 作用:把二进制数据、特殊字节、不可见字符转成纯字母、数字、+、/,方便在 HTTP、参数、JSON、Cookie 中传输。
抓包常见场景:密码、图片二进制、Token、加密后的密文、文件流、接口暗文大量使用 Base64。
2. 核心原理
规则
字节对应关系
- 原始:3 字节 = 24 bit
- 编码后:4 字符
- 体积变化:Base64 编码后体积比原数据大 1/3(网络传输会增重)
3. 补位规则(抓包看末尾 = 必懂)
Base64 末尾的 = 是填充符,只出现在数据长度不能被 3 整除时:
例:
- YWJj → 无等号,原始 3 字节
- YWE= → 1 个等号,原始 2 字节
- YQ== → 2 个等号,原始 1 字节
4. 标准码表(64 个字符)
A-Z、a-z、0-9、+、/,共 64 个字符。
变种:URL Safe Base64(接口 / URL 常用) 把 + → – ,/ → _,去掉末尾 =,避免 URL 转义冲突。
5. 关键区分:编码 ≠ 加密
- Base64 公开码表、完全可逆,任何人都能解码
- 逆向 / 抓包中:看到 Base64 不等于加密,只是格式转换
- 常见套路:先 AES/DES 加密 → 再 Base64 输出(这才是真正加密)
6. 实战场景(抓包 / 解密)
7. 极简代码示例(常用语言)
Python
import base64
# 编码 字符串 → Base64
s = "测试123"
b64_enc = base64.b64encode(s.encode("utf-8")).decode()
# 解码 Base64 → 字符串
b64_dec = base64.b64decode(b64_enc).decode("utf-8")
JavaScript(前端抓包调试)
// 编码
let enc = btoa(unescape(encodeURIComponent("测试123")));
// 解码
let dec = decodeURIComponent(escape(atob(enc)));
五、四大编码横向对比(抓包快速区分)
| ASCII | 英文字符集 | 1 字节 | ❌ 不支持 | 老式协议、HTTP 基础头 |
| Unicode | 全局字符编号(码点) | 无固定 | ✅ 支持 | 底层字符定义,不直接传输 |
| UTF-8 | Unicode 变长存储编码 | 1~4 字节 | ✅ 支持 | 全网主流、接口、网页、JSON |
| Base64 | 二进制转文本编码 | 膨胀 1/3 | 间接支持 | 二进制传输、参数、Token、密文 |



