【问题标题】:Text files appearing as bynaries on Mac Os X在 Mac Os X 上显示为副词的文本文件
【发布时间】:2013-05-24 20:08:46
【问题描述】:

我有超过 5000 个文本文件在 Windows 中由我需要在 Mac OS X 机器上处理的 PDF 文件生成。我在所有这些上运行dos2unix 以更正换行符并将编码从 UTF-16LE 转换为 UTF-8。

在 4949 个情况下一切正常,但对于 320 个文件,dos2unix 跳过执行,说它们是二进制文件。

这与file -c 一致,这给了我data 320 个跳过的文件和其他文件的文本。然而,它们是目视检查的文本......

如何修理 320?起初我怀疑这是 BOM 的存在,但它也出现在没有给出问题的文件上。

此外,数据和文本文件都以:

0000000 ff fe 3d 00 20 00 70 00 61 00 67 00 65 00 20 00
0000010 31 00 20 00 3d 00 0a 00 0d 00 0d 00 0a 00

有什么提示吗? 提前致谢。

【问题讨论】:

    标签: byte-order-mark dos2unix


    【解决方案1】:

    我发现有时文本文件包含不可打印的 ASCII 字符。在这种情况下,即使文件是“文本”文件,dos2unix 也会认为它们是二进制文件。如果是这种情况,您可以像这样使用tr 命令:

    tr -cd '\11\12\15\40-\176' < file.txt
    

    这是基本命令,它将清除那些不可打印的字符并将新的 ASCII 清除文本输出到标准输出。要将此输出实际保存为文件,只需将输出通过管道传输到文件:

    tr -cd '\11\12\15\40-\176' < file.txt > newfile.txt
    

    现在newfile.txt 是您可以在其上运行dos2unix 的文本文件。

    字符串'\11\12\15\40-\176' 的补码(即-c)意味着tr 命令会删除除该字符串中定义的字符之外的所有内容,这些字符是:

    • 八进制\11:制表符
    • 八进制\12:换行
    • 八进制\15:回车
    • 八进制 \40-\176:所有良好/正常的键盘字符

    【讨论】:

      【解决方案2】:

      根据dos2unix --help,您可以将参数--force 传递给dos2unix 以“强制转换二进制文件”。所以在你的 shell 中,在一个只有 320 个跳过文件的目录中,你可以输入dos2unix --force *

      【讨论】:

      • Rory,谢谢,但这最终会创建其他乱码文件,我无法进一步处理。
      【解决方案3】:

      您可以尝试最新版本的 dos2unix (6.0.3)。它将打印第一个二进制符号的行号。这可能有助于您分析问题。

      最好的问候,

      【讨论】:

      猜你喜欢
      • 2013-11-10
      • 1970-01-01
      • 2013-10-31
      • 2015-11-05
      • 2012-04-01
      • 1970-01-01
      • 2011-07-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多