在 Debian(或其他 Linux)系统中,strings 命令用于从二进制文件中提取可打印字符串。如果输出出现乱码,通常不是 strings 本身的问题,而是编码或数据本身不可读导致的。下面按常见原因和解决办法说明。
strings 会从任意二进制文件中扫描“可打印字符序列”,如果文件本身是加密的、压缩的或机器码,结果看起来就像乱码。
✅ 解决:
file 文件名
Debian 默认使用 UTF-8,如果二进制中的字符串是:
就会显示乱码。
✅ 解决:用 iconv 转换编码
strings file | iconv -f GBK -t UTF-8
常见编码尝试:
iconv -f GB2312 -t UTF-8
iconv -f ISO-8859-1 -t UTF-8
如果 LANG 或 LC_ALL 设置错误,也会导致中文乱码。
✅ 解决:
locale
若不是 UTF-8,可临时设置:
export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8
strings 实现某些 BusyBox 或嵌入式系统的 strings 行为不同。
✅ 解决:
which strings
strings --version
Debian 通常使用 GNU binutils 的 strings。
如果你其实想分析程序逻辑,而不是字符串:
✅ 更好工具:
objdump -d 文件
gdb 文件
strings file | iconv -f GBK -t UTF-8 2>/dev/null
strings -n 6 file
strings file | iconv -f GB18030 -t UTF-8
file 文件 确认类型locale 是否正常 UTF-8strings(还是反汇编)如果你能贴出:
file 输出)我可以更精确地帮你判断。