在 Debian(或其他 Linux 系统)里看到 strings 输出乱码,通常不是一个“bug”,而是数据本身或查看方式不匹配造成的。下面按“常见原因 → 怎么判断 → 怎么解决”来说明。
strings 的作用是:
从一个二进制文件里提取“看起来像字符串”的字节序列(默认长度 ≥ 4)。
它不会做编码识别,只是把字节原样打印出来。
Debian 默认终端是 UTF-8,但二进制里可能是:
现象
& # ”
或方块、问号
如何确认
file 文件名
或
strings file | iconv -f gbk -t utf-8
✅ 解决:
strings file | iconv -f GBK -t UTF-8
strings 会把:
误当成“字符串”
现象
\x00、\x01判断
hexdump -C file | less
✅ 解决:
objdump, readelf, binwalk)Windows 程序常见(如 L"abc")
现象
a\0b\0c\0
解决
strings -e l file
或
iconv -f UTF-16 -t UTF-8
终端 locale 与数据不匹配
locale
✅ 可尝试:
export LANG=C
strings file
现象
✅ 工具:
binwalk file
strings -n 6 file
file file
strings file | head
strings -e l file
strings file | iconv -f gbk -t utf-8
hexdump -C file | less
Debian 下 strings 乱码,99% 不是 strings 的问题,而是“编码不对”或“本来就不是字符串”。
如果你愿意,可以把:
file 命令输出发出来,我可以直接帮你判断是哪种情况。