在 Debian(或一般 Linux)系统中,strings 命令输出乱码,通常不是 strings 本身坏掉了,而是文件内容或编码方式和你的预期不一致。常见原因如下:
strings 的作用是:从二进制文件中提取“可打印字符序列”。
如果文件是:
.gz、.xz)那么提取出来的“字符串”本身就不是人能读懂的内容,看起来就像乱码。
✅ 检查方法:
file 文件名
strings 默认只认 ASCII(7 位),而中文通常是 UTF-8(多字节)。
例如:
中 → UTF-8: E4 B8 AD
strings 会把每个字节当成“字符”,于是显示成:
ä¸
✅ 解决方法(推荐):
strings -e S 文件名
或
strings -n 4 文件名 | iconv -f UTF-8 -t UTF-8
如果是 GBK:
strings 文件名 | iconv -f GBK -t UTF-8
即使 strings 输出正确,如果终端不是 UTF-8,也会乱码。
✅ 检查终端编码:
locale
应为:
LANG=zh_CN.UTF-8
如果不是:
export LANG=zh_CN.UTF-8
例如:
strings这种情况通常伴随大量无规律字符。
一些程序会:
strings 看到的只能是“静态密文”。
file 文件
locale
strings 文件 | head
strings -e S 文件 | head
如果你愿意,可以把:
file 文件 的输出发出来,我可以直接告诉你为什么乱码、怎么正确读取。