如何检查文件是否有 utf-8 文本的 BOM

iro*_*and 22 unicode

如何从命令行检查 utf-8 文本文件是否具有 BOM?

file命令显示我UTF-8 Unicode text

但我不知道这意味着文件中没有 BOM。

我正在使用Ubuntu 12.04.

vin*_*c17 39

file会告诉你是否有 BOM。您可以测试:

$ /usr/bin/printf "\ufeff...\n" | file -
/dev/stdin: UTF-8 Unicode (with BOM) text
Run Code Online (Sandbox Code Playgroud)

注意:根据更新file日志,这个功能在 2007 年就已经存在了。所以,这应该适用于任何当前的机器。

  • @LinuxSecurityFreak POSIX 没有指定 `\u` 转义序列(至少现在还没有)。它用 3 位八进制数指定 `\ddd`,因此可移植版本可以是: `printf '\357\273\277...\n' | file -`(但很难记住)。 (2认同)

小智 8

如果你执行stat fileName它应该给你确切的三个字符。当我在编辑器中打开文件时,我什么也看不到。所以注意到文件大小为 3 让我清楚它有一个 BOM。

此外,这里的帖子对我来说很有帮助。

hexdump -n 3 -C 2.txt
00000000 ef bb bf
ef bb bf // YES
Run Code Online (Sandbox Code Playgroud)