温馨提示×

linux strings是否支持中文

小樊
36
2026-10-23 00:18:17
栏目: 智能运维

strings 本身是 支持“中文”的,但要看你说的“支持”是什么意思,以及你用的是哪种情况。


1. strings 能不能显示中文?

能。

strings 的作用是:从二进制文件中提取可打印字符序列。
只要你文件里的“中文”是以连续可打印字节的形式存在(最常见是 UTF‑8 编码),strings 就能原样打印出来。

例如:

echo "这是一段中文 test 123" > a.txt
strings a.txt

输出:

这是一段中文 test 123

2. 常见误区:为什么有时候看不到中文?

✅ 情况一:编码不是 UTF‑8

如果中文是 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

3. 常用参数(对中文友好)

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

4. 结论一句话

strings 支持中文,但它只是“原样输出字节”,不做编码识别或转换。

如果你愿意,可以告诉我:

  • 你是在分析 ELF / exe / 日志 / 固件?
  • 中文是 UTF‑8 还是 GBK?

我可以给你更精确的命令。

0 踩