strings 本身是 支持“中文”的,但要看你说的“支持”是什么意思,以及你用的是哪种情况。
strings 能不能显示中文?能。
strings 的作用是:从二进制文件中提取可打印字符序列。
只要你文件里的“中文”是以连续可打印字节的形式存在(最常见是 UTF‑8 编码),strings 就能原样打印出来。
例如:
echo "这是一段中文 test 123" > a.txt
strings a.txt
输出:
这是一段中文 test 123
如果中文是 GBK / GB2312:
strings gbk_file
可能显示成乱码,因为 strings 不会做编码转换,只是把字节当字符输出。
解决方式:
strings gbk_file | iconv -f gbk -t utf-8
strings 默认要求连续可打印字符 ≥ 4 个(可通过 -n 调整)。
UTF‑8 中一个汉字占 3 字节,如果被其他字节隔开,就可能不被识别。
例子:
strings -n 3 file
即使 strings 输出了中文,如果终端不是 UTF‑8,也会乱码。
检查:
echo $LANG
# 应为 zh_CN.UTF-8 或 en_US.UTF-8
strings -n 3 file # 最小长度改为 3
strings -e S file # 指定 7-bit ASCII(默认)
strings -e l file # 16-bit little endian(Unicode)
strings -e B file # 32-bit UTF-32
如果是 UTF‑16 / UCS‑2 中文(如 Windows 程序):
strings -e l file
strings支持中文,但它只是“原样输出字节”,不做编码识别或转换。
如果你愿意,可以告诉我:
我可以给你更精确的命令。