当前位置: 首页 > 面试题库 >

用BOM搜索UTF-8文件的简便方法?

凌蕴藉
2023-03-14
问题内容

为了进行调试,我需要在目录中递归搜索所有以UTF-8字节顺序标记(BOM)开头的文件。我当前的解决方案是一个简单的shell脚本:

find -type f |
while read file
do
    if [ "`head -c 3 -- "$file"`" == $'\xef\xbb\xbf' ]
    then
        echo "found BOM in: $file"
    fi
done

或者,如果您希望使用简短的,难以理解的单线:

find -type f|while read file;do [ "`head -c3 -- "$file"`" == $'\xef\xbb\xbf' ] && echo "found BOM in: $file";done

它不适用于包含换行符的文件名,但是无论如何都不会出现此类文件。

有没有更短或更优雅的解决方案?

是否有任何有趣的文本编辑器或文本编辑器宏?


问题答案:

这个简单的命令不仅找到而且清除了讨厌的BOM,该怎么办?:)

find . -type f -exec sed '1s/^\xEF\xBB\xBF//' -i {} \;

我爱“发现” :)

警告 以上内容将 修改 包含这三个字符的二进制文件。

如果只想显示BOM表文件,请使用以下文件:

grep -rl $'\xEF\xBB\xBF' .


 类似资料:
  • 问题内容: 我在写一些注释过的PHP类,但偶然发现了一个问题。我的名字(用于@author标记)以一个(以UTF-8字符开头,…和一个奇怪的名字,我知道)结尾。 即使我将文件另存为UTF-8,也有一些朋友报告说他们看到这个字符完全弄乱了()。通过添加BOM表签名可以解决此问题。但是那件事让我有些烦恼,因为除了我在Wikipedia上以及关于SO的其他一些类似问题上所了解的之外,我对此并不了解。 我

  • 问题内容: 我需要解析其他工具生成的文件,该工具无条件输出带有UTF-8 BOM头(EFBBBF)的json文件。我很快发现这就是问题所在,因为Python 2.7模块似乎无法解析它: 删除BOM可以解决问题,但是我想知道是否还有另一种使用BOM头解析json文件的方法? 问题答案: 您可以打开: 或自己解码并传递给:

  • 问题内容: 我有一个带有BOM的UTF-8编码文件,并且想要删除BOM。是否有任何Linux命令行工具可从文件中删除BOM? 问题答案: BOM是Unicode代码点U + FEFF;UTF-8编码由三个十六进制值0xEF,0xBB,0xBF组成。 使用bash,您可以创建带有特殊引号形式的UTF-8 BOM,该形式实现Unicode转义:。因此,使用bash,从文本文件的开头删除UTF-8 BO

  • 问题内容: 这里有两个问题。我有一组通常是带有BOM的UTF-8文件。我想将它们(理想情况下)转换为没有BOM的UTF-8。似乎可以解决这个问题。但是我真的看不到任何有关用法的好例子。这将是处理此问题的最佳方法吗? 同样,如果我们能够处理清楚知道的不同输入编码(看到的ASCII和UTF-16),那将是理想的。看来这一切都是可行的。是否有一种解决方案可以采用任何已知的Python编码并以UTF-8格

  • 我尝试用JasperReport导出CSV文件,问题是当我想打印像“€”这样的货币时。 当我搜索解决方案时,我意识到这是关于文件编码的!我写这个代码! JasperReport导出的文件编码在“没有BOM的UTF-8”上。所以当我用Excel打开文件时,“€”看起来像“,”。但是当我用记事本打开文件时,“€”看起来像“€”。 在记事本上,我将文件编码转换为UTF-8(我认为是BOM),我保存文件。

  • 问题内容: 首先,有一些背景知识:我正在使用Python开发Web应用程序。我的所有(文本)文件当前都与BOM一起存储在UTF-8中。这包括我所有的HTML模板和CSS文件。这些资源作为二进制数据(BOM和所有)存储在我的数据库中。 从数据库检索模板时,我使用对其进行解码。当HTML到达浏览器时,BOM出现在HTTP响应正文的开头。这会在Chrome中产生一个非常有趣的错误: 当Chrome浏览器