在 Linux 下用 strings 查中文字符串,需要注意一点:strings 默认是按可打印 ASCII 字符提取的,而中文通常是 UTF-8 多字节编码,所以默认情况下可能看不到完整中文,或者看到乱码/断断续续的字节。
下面给你几种实用方法。
strings file
如果文件里是 UTF-8 中文,部分系统会显示出来,但 often 会断。
-e 指定编码(推荐)strings -e S file
或
strings -n 2 file
-n 2表示最少 2 个字节才认为是字符串,对中文更友好
strings file | grep -P '[\x{4e00}-\x{9fff}]'
或者:
strings -e S file | grep -P '[\x{4e00}-\x{9fff}]'
grep -a -P '[\x{4e00}-\x{9fff}]' file
-a 表示按文本处理二进制文件
先确认文件编码:
file file
如果是 GBK:
iconv -f gbk -t utf-8 file | strings | grep 中文
strings -e S -n 3 binary | grep -P '[\x{4e00}-\x{9fff}]+'
strings -e S ./app | grep -P '错误|失败|成功|登录'
strings 本身对中文支持一般strings -e S | grep 中文正则iconv如果你愿意,可以告诉我:
我可以给你精确命令。