字符集编码转换
同一段文本在 UTF-8、UTF-16、GBK(内置 3500 常用字子集)、Unicode 转义、HTML 实体、URL 百分号、八进制与十六进制字节序列之间互转,并给出逐个字符的字节表与总字节数。
浏览器本地运行所有计算都在你的浏览器里完成,数据不会离开本机。
逐字节表
按字符列出 UTF-8 与 GBK 字节;GBK 表外的字符显示为 —
这个工具能做什么
- 排查乱码:同一段文字在 UTF-8、GBK、UTF-16 下到底是哪几个字节,输入一次就能横向对比,不用来回换编辑器。
- 写爬虫或对接老系统时,把 GBK 页面里的中文转成 UTF-8,或者反过来把 UTF-8 文本转成 GBK 字节串塞进只吃 GBK 的接口。
- 核对接口文档里的转义写法:Unicode 转义、HTML 实体、URL 百分号、八进制与十六进制字节序列之间互转,顺手确认一个中文字符占几个字节。
- 看日志里的「\344\275\240」这类八进制转义时,粘进去直接还原成中文原文。
示例
输入
你好,UniKit!
输出
e4bda0e5a5bdefbc8c556e694b697421
默认是「文本 → UTF-8 十六进制」,中文先按 UTF-8 编码成字节再输出;换成 GBK 会得到 c4e3bac3a3ac556e694b697421。
常见问题
为什么转 GBK 会报「该字符不在内置 GBK 常用字子集里」?
页面里的 GBK 表只包含 GB2312 一级汉字和符号区(约 3500 个常用字),二级汉字、GBK 扩展区和 Emoji 都不在表内,遇到就报错而不是给出错误字节。需要完整 GBK 建议用 iconv 之类的本地工具。
Unicode 转义为什么不把英文字母也转掉?
默认只转义非 ASCII 字符和反斜杠,所以「你好,UniKit!」写成 \u4f60\u597d\uff0cUniKit!,可读性更好。勾选「连 ASCII 一起转义」后会变成 \u4f60\u597d\uff0c\u0055\u006e…,适合整理成纯 ASCII 的安全文本。
URL 百分号和 JavaScript 的 encodeURIComponent 一样吗?
不一样。这个工具按 RFC 3986 保留 -_.!~*'() 这些非保留字符,中文会变成 %E4%BD%A0 这样的 UTF-8 字节;encodeURIComponent 不转义的范围更大(还包括 !'()* 之类的差异),两者结果可能不同。
十六进制那一栏要怎么写才不报错?
字节数必须是偶数,允许空格、逗号、冒号、连字符和 0x 前缀,解析时会自动去掉。写成 e4bda0(5 位)或者含 g 之类的非法字符会提示「不是合法的十六进制字节序列」。
输入内容会被上传吗?
不会。转换全部在浏览器里用 JavaScript 完成,页面不发送任何请求,断网也能用;GBK 表是随页面打包的静态数据。
关键词:charsetencodinggbkgb2312utf-8utf-16unicode escapehtml entityurl encode字符集编码转换字节