【问题标题】:gnu-binutils-strings utf-8 instead of utf-16 or asciignu-binutils-strings utf-8 而不是 utf-16 或 ascii
【发布时间】:2011-12-13 10:05:36
【问题描述】:

我注意到 gnu-binutils-strings 可以打印出文件中的 utf-16 内容 - 程序是否可以打印出 utf-8 字符串?如果是这样,哪些论点是合适的?我正在使用 subprocess 的 python 环境中工作,并希望使用 subprocess.Popen 调用将通过管道生成的 gnu-binutils-strings 的输出。

【问题讨论】:

    标签: python unix utf-8 utf-16 binutils


    【解决方案1】:

    我对@9​​87654321@ 没有经验,但我拥有的版本 (2.21.51.20110605) 有一个 8 位编码选项 (-eS),可以处理 utf-8 文本。它必须广泛寻找由不可打印字符(值

    【讨论】:

    • 感谢您的建议。这就像一个冠军。我回去仔细检查了手册页,并没有注意到“-eS”标志是一个选项。为了测试它,我下载了 CNN 的首页以获取几种 utf-8 语言,并在输出文件上运行“strings -eS”。像冠军一样工作。 ASCII html 内容和特定语言新闻故事的 utf-8 编码都在那里。另请注意,字符串会抛出控制字符。我有些担心“-e”标志的“可打印字符”方面会破坏事情。
    • 虽然它可能会意外工作,但它似乎不是故意的。我正在搜索一个核心转储,strings -eS 未能找到一些我可以在 emacs 中清楚看到的 UTF-8 文本。
    • @hackerb9,UTF-8 是 ASCII 或 2-4 字节可打印字节值序列。根据文档,strings 默认查找序列 4 个可打印字符,即 4 个非控制字符。你的琴弦比这个短吗?文档还说,除非使用-a 选项扫描所有文件,否则它可能默认仅在二进制文件的数据部分中搜索。
    • 这是一个很好的观点。确实,如果它所做的只是删除 ≤ 0x20 的字节,那么它应该保留我感兴趣的 UTF-8 文本。我不确定为什么文本没有出现,也许是一个错误,也许我错过了strings -eS 倾倒的大量二进制数据中的针。无论如何,我已经编写了自己的strings 版本,它使用UTF-8 的self-synchronization 属性来查找有效字符,而不必担心序列从哪里开始。它对我很有用。
    猜你喜欢
    • 2020-01-29
    • 2019-05-23
    • 2019-07-31
    • 1970-01-01
    • 2014-11-02
    • 1970-01-01
    • 2018-12-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多