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

如何从UTF-8文件中删除BOM?

涂煌
2023-03-14
问题内容

我有一个带有BOM的UTF-8编码文件,并且想要删除BOM。是否有任何Linux命令行工具可从文件中删除BOM?

$ file test.xml
test.xml:  XML 1.0 document, UTF-8 Unicode (with BOM) text, with very long lines

问题答案:

BOM是Unicode代码点U + FEFF;UTF-8编码由三个十六进制值0xEF,0xBB,0xBF组成。

使用bash,您可以创建带有$''特殊引号形式的UTF-8
BOM,该形式实现Unicode转义:$'\uFEFF'。因此,使用bash,从文本文件的开头删除UTF-8 BOM的可靠方法是:

sed -i $'1s/^\uFEFF//' file.txt

如果文件不是以UTF-8 BOM开始,则文件将保持不变,否则将删除BOM。

如果您使用其他外壳程序,则可能会"$(printf '\ufeff')"产生产生BOM字符的情况(与zsh任何没有printf内置外壳程序的外壳程序一起使用,只要/usr/bin/printf是Gnu版本即可),但是如果您想要Posix兼容的版本,则可以使用:

sed "$(printf '1s/^\357\273\277//)" file.txt

-i就地编辑标志也是Gnu扩展;此版本将可能已修改的文件写入stdout。)



 类似资料:
  • 问题内容: 使用PHP5(cgi)从文件系统输出模板文件,并出现吐出原始HTML的问题。 即使我添加了BOM修复程序,但Firefox接受它仍然有问题。您可以在此处查看实时副本:http : //ircb.in/jisti/(以及要查看的模板文件,我在http://ircb.in/jisti/home.html上提交的文件) 任何想法如何解决这个问题?o_o 问题答案: 您将使用以下代码删除utf

  • 使用PHP5(cgi)从文件系统输出模板文件,并在输出原始HTML时遇到问题。 尽管我已经添加了BOM修复,但Firefox接受它时仍然存在问题。您可以在此处看到实时副本:http://ircb.in/jisti/(还有我扔的模板文件http://ircb.in/jisti/home.html如果您想查看它) 知道怎么解决这个问题吗?o_o

  • 问题内容: 我正在使用HTML5构建拖放式Web应用程序,并将文件拖放到div上,当然要获取dataTransfer对象,这给了我FileList。 现在,我想删除一些文件,但是我不知道怎么办,或者甚至可能。 最好是我只想从FileList中删除它们;我没有用。但是,如果那不可能,我是否应该在与FileList交互的代码中编写检查代码?那看起来很麻烦。 问题答案: 如果只想删除几个选定的文件,则不

  • 问题内容: 我必须用Java处理这种情况: 我从声明了encoding = utf-8的客户端收到XML格式的请求。不幸的是,它可能不包含utf-8字符,并且有必要从我这一边的xml中删除这些字符(旧式)。 让我们考虑一个示例,其中该无效XML包含£(磅)。 1)我将xml作为带有£的java字符串(我现在无法访问接口,但我很可能将xml作为java的字符串)。我可以使用replaceAll(£,

  • 问题内容: 我们有一个数据输入人员,他在Windows上使用UTF-16编码,并且希望拥有utf-8并删除BOM。utf-8转换有效,但BOM仍然存在。我将如何删除?这是我目前拥有的: 如果我使用hexdump -CI,请参阅: 在结果文件中。如何删除物料清单? 谢谢 问题答案: 只需使用和: 将为您摆脱BOM表(并推断出字节序)。

  • 问题内容: 我在字符串列表的json.Marshal上得到这个: 原因很明显,但是如何在Go中删除/替换这样的字符串?我一直在阅读docst 和包,似乎没有明显/快速的方法。 例如,在Python中,您可以使用一些方法删除无效字符,将其替换为指定字符或严格设置,这会导致无效字符的异常。如何在Go中做等效的事情? 更新:我的意思是得到异常的原因(紧急?)-json.Marshal期望有效的UTF-8