悦省yueser.com

← 全部指南

十六进制解码指南:把日志里的字节还原成文字

解码失败通常不是工具坏了,而是这段字节本来就不是 UTF-8 文本,或者你在复制时把偏移量、行号一起带进去了。

打开工具:十六进制解码器

这些十六进制是从哪来的

服务端日志把请求体打成十六进制、抓包工具导出字段、数据库里存了被转义的字符串、别人发来一段 e4 b8 ad 让你看是什么——这些都是解码的典型场景。它做的事很朴素:每两个十六进制数字读成一个字节,再按 UTF-8 拼回文字。

还有一类是排错:页面显示乱码,你把那段字符转成十六进制,再解回来,能确认问题出在存储、传输还是渲染。因为这一步不改变字节,只改变呈现方式,所以适合做对照实验,前提是保留一份原始数据。

贴进去之前先检查格式

每个字节必须两位,e4 b8 ad 可以,e4b8ad 不行——后者会被当成一个巨大的数,取低八位后得到一个完全不同的字节。分隔符用空格或逗号都行,大小写不敏感,0x 前缀也能识别,但别把行号、偏移量一起粘进来。

如果结果里出现大量 �(替换字符),说明这些字节不构成合法的 UTF-8 序列。常见原因是原数据其实是 GBK、Big5 或二进制,或者你在中间截断了某个多字节字符。这时不要反复重试,先确认来源编码。

边界:能还原,但不负责解释

解码只做字节到字符的映射,不判断内容是否可信,也不校验长度和校验和。日志里的十六进制如果被截断,解出来的前半段看着正常,后半段却是乱码,很容易误判成编码问题,所以它只能算查看工具。

遇到非文本数据,别硬解:图片、压缩包、加密后的密文都该走 Base64 或二进制查看器。还要记住,十六进制不是加密,任何人拿到都能还原,用它对敏感字段做「混淆」没有意义。

常见问题

解出来全是问号和方块怎么办?

先确认原始编码。工具按 UTF-8 解码,GBK 或 Big5 的中文在这里一定显示异常;二进制数据也不该用文本解码。拿到来源编码后,用 iconv 或对应工具转换,再回来看结果。

需要自己补空格或 0x 吗?

不需要。工具按空白和逗号切分,0x 前缀会被忽略,大小写也不影响。真正要注意的是每个字节保持两位,别把三个字节连成一串,也别把日志里的偏移量当成数据。

能把十六进制当作加密吗?

不能,它没有任何密钥,一步即可还原。用十六进制「保护」密码或令牌,只是让人多花几秒钟。需要保密请使用加密,并注意密钥本身的管理。

相关工具:十六进制解码器