在 Linux 下用 strings 看“乱码”,通常是因为文件编码不对或提取出来的不是文本而是二进制片段。下面按常见情况给你讲怎么用、以及怎么让“乱码”变可读。
strings 用来从二进制文件里提取“看起来像字符串”的内容(默认长度 ≥ 4 的可打印字符)。
strings file.bin
如果你看到的是乱码,一般有两种原因:
先判断文件编码:
file file.bin
# 或
enca file.bin
常见结果:
UTF-8ISO-8859 textNon-ISO extended-ASCII(通常是 GBK)strings file.bin | iconv -f gbk -t utf-8
如果不确定编码,可以试:
strings file.bin | iconv -f GB18030 -t UTF-8
strings file.bin | iconv -f ISO-8859-1 -t UTF-8
strings -n 6 file.bin
strings -e l file.bin # 16-bit little endian
strings -e b file.bin # 16-bit big endian
hexdump 看原始内容hexdump -C file.bin | less
less 直接看less file.bin
# 然后按 v 或 :e
有些“乱码”只在 strings 里,不代表文件坏了。
strings app.exe | iconv -f gbk -t utf-8 | grep 用户名
strings 看到乱码,99% 是编码问题,用
iconv转一下就好。
如果你愿意,可以把:
file 命令输出发出来,我可以直接告诉你该用哪条命令。