去除 UTF-8 文件 BOM 头

摘要:
出现在文本文件的标题中。它在Unicode编码标准中用于标识文件的格式。例如,当UTF-8编码的文件保存在记事本中时,三个不可见的字符“0xEF0xBB0xBF”将自动插入文件开头。但是,通常不需要此标头来标识文件的代码。PHP代码中BOM的存在将导致页面第一行出现意外的空白。要删除BOM,请打开vim并键入:setbomb,按Enter键显示bomb以指示文件有BOM,按nobom以指示文件没有BOM;键入:setnobomb并按Enter键。打开记事本++,单击菜单栏-,然后保存。

什么是 BOM?

BOM 全称是 Byte Order Mark(字节顺序标记)。出现在文本文件头部,Unicode 编码标准中用于标识文件是采用哪种格式的编码。比如:当用记事本保存一个以 UTF-8 编码的文件时,会自动在文件开始自动插入三个不可见字符“0xEF 0xBB 0xBF”,但是通常情况下不需要这个头部来识别文件的编码,在PHP代码中存在BOM,会导致网页的首行存在预料外的间隙。

去除 BOM 方法

【方法一】打开 vim

键入 :set bomb,回车,显示 bomb 表示文件有 BOM,nobom 表示文件无 BOM;

键入 :set nobomb,并回车。

【方法二】打开 notepad++

依次点击菜单栏【格式】-【以 UTF-8 无 BOM 格式编码】,并保存。

【方法三】sed 命令

utf-8 编码文件的 BOM 是 “0xEF 0xBB 0xBF”(更多 BOM 请点击),针对 utf-8 编码文件去掉 BOM:

// 生成新文件
sed '1s/^xEFxBBxBF//' < orig.txt > new.txt

// 直接覆盖老文件
sed -i '1s/^xEFxBBxBF//' orig.txt

参考链接:

How can I remove the BOM from a UTF-8 file?(https://unix.stackexchange.com/questions/381230/how-can-i-remove-the-bom-from-a-utf-8-file

免责声明:文章转载自《去除 UTF-8 文件 BOM 头》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇对操作系统的理解使用Rancher的RKE快速部署Kubernetes集群下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

maven之BOM及BOM和provided的一个小坑

  BOM(Bill of Materials)定义一整套相互兼容的jar包版本集合,使用时只需要依赖该BOM文件,即可放心的使用需要的依赖jar包,且无需再指定版本号。BOM的维护方负责版本升级,并保证BOM中定义的jar包版本之间的兼容性。      子模块很多时,可以使用dependencyManagement在父模块中统一管理。   父模块中配置:...

如何判断数据库中存储的是不是乱码

开发人员说从数据库中读取的是??? 数据库表字符集都是utf8,也set names utf8了,为什么读取到的还是??? 可以判断数据库中存储的是???了,如何验证呢? 1.暂时打开general_log,看看开发人员插入的到底是什么语句 2.抓包分析 字符集测试情况,操作系统字符集为utf8 表的字符集 set names 存中文 读取中文 l...

MAC安装MySQL踩过坑

一、mac 10.13.4 安装mysql-workbench-community-8.0.11-rc-macos-x86_64.dmg   1)配置密码有强密码模式和弱密码模式,强密码要求必须大小写英文和特殊字符,如Admin_123   2)支持修改为弱密码 USE mysql;ALTER USER 'root'@'localhost' IDENTIF...

3、Python字符编码区分utf-8和utf-8-sig

Python 读取文件首行多了"ufeff"字符串 python读取B.txt文件时,控制台打印首行正常,但是若是用首行内容打开文本的话,就会报错: Traceback (most recent call last): A File "E:/python project/multiProcess/test.py", line 32, in <mo...

Ansi,UTF8,Unicode编码(续)

1.三种编码的回顾 Ansi字符串我们最熟悉,英文占一个字节,汉字2个字节,以一个\0结尾,常用于txt文本文件。 Unicode字符串,每个字符(汉字、英文字母)都占2个字节;在VC++的世界里,Microsoft比较鼓励使用Unicode,如wchar_t。 UTF8是Unicode一种压缩形式,英文A在unicode中表示为0x0041,英语中这种存...

MYSQL8.0+ 使用JDBC查询中文乱码的问题

在建表时,附加一句  DROP TABLE IF EXISTS `sys_table`;CREATE TABLE `sys_table` ( ... ) ENGINE=InnoDB DEFAULT CHARSET=utf8;set names gb2312; navicat 如果出现中文乱码,可以查看mysql的字符集和navicat字符集是否统一,使用 ...