UTF-8中的BOM-带还是不带?

转自:http://blog.csdn.net/fanpei_moukoy/article/details/21464305


UTF-8 不需要 BOM,尽管 Unicode 标准允许在 UTF-8 中使用 BOM。所以不含 BOM 的 UTF-8 才是标准形式,在 UTF-8 文件中放置 BOM 主要是微软的习惯(顺便提一下:把带有 BOM 的小端序 UTF-16 称作「Unicode」而又不详细说明,这也是微软的习惯)。

什么是BOM

BOM(byte-order mark),即字节顺序标记,它是插入到以UTF-8、UTF16或UTF-32编码Unicode文件开头的特殊标记,用来识别Unicode文件的编码类型。对于UTF-8来说,BOM并不是必须的,因为BOM用来标记多字节编码文件的编码类型和字节顺序(big-endian或little-endian)。

在绝大多数编辑器中都看不到BOM字符,因为它们能理解Unicode,去掉了读取器看不到的题头信息。若要查看某个Unicode文件是否以BOM开头,可以使用十六进制编辑器。下表列出了不同编码所对应的BOM。

BOM Encoding
EF BB BF UTF-8
FE FF UTF-16 (big-endian)
FF FE UTF-16 (little-endian)
00 00 FE FF UTF-32 (big-endian)
FF FE 00 00 UTF-32 (little-endian)

BOM的来历

为了识别 Unicode 文件,Microsoft 建议所有的 Unicode 文件应该以 ZERO WIDTH NOBREAK SPACE(U+FEFF)字符开头。这作为一个“特征符”或“字节顺序标记(byte-order mark,BOM)”来识别文件中使用的编码和字节顺序。

Linux/UNIX 并没有使用 BOM,因为它会破坏现有的 ASCII 文件的语法约定。

带BOM和不带BOM的区别

「UTF-8」和「带 BOM 的 UTF-8」的区别就是有没有 BOM。即文件开头有没有 U+FEFF,也就是说有没有这个标记。

带还是不带?

如果你的编程平台需要跨平台编译,比如,会在linux平台上编译,而不是只在windows上运行,建议不带BOM,unicode标准就是不带,带BOM毕竟那是微软的那一套,带了会出现很大的问题。反之,如果你的程序只在windows平台上编译出windows程序,这个可有可无。
注意:这里所说的带还是不带,指的是:源码字符集(the source character set)-源码文件是使用何种编码保存的;

           现在linux平台下的GCC 4.6及以上的版本已经可以支持带BOM的源码了!!!!!

     所以之前出现的问题也可以不用冲突,带或者不带,以后就不会成为一个问题。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/509288.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ACM训练总结(大二)

时光飞速,不知不觉,现在是第三次写总结报告了,第一次的解题报告是在大一上学期的期末,那时候是满怀信心、充满斗志,觉得以后肯定在ACM这条路上有所作为,记得那次写解题报告的主要内容是一个自我提醒、自我激…

递归的函数

Problem Description 给定一个函数 f(a, b, c)&#xff1a;如果 a ≤ 0 或 b ≤ 0 或 c ≤ 0 返回值为 1&#xff1b;如果 a > 20 或 b > 20 或 c > 20 返回值为 f(20, 20, 20)&#xff1b;如果 a < b 并且 b < c 返回 f(a, b, c−1) f(a, b−1, c−1) − f(a,…

Qt5中文乱码解决方案

升级到Qt5.X之后&#xff0c;原先解决的Qt显示中文乱码的方法突然不适用了&#xff0c;找了很多方式来解决这个问题 第一种&#xff1a; 在公司代码里看到的方法&#xff0c;先将对应的cpp文件用windows自带的记事本打开&#xff0c;另存为UTF-8格式&#xff0c;然后在代码中&a…

Linux常用压缩和解压命令

.tar 解包 tar xvf filename.tar .tar 打包 tar cvf filename.tar dirname .gz 解压1 gunzip filename.gz .gz 解压2 gzip -d filename.gz .gz 压缩 gzip filename .tar.gz 和 .tgz 解压 tar zxvf filename.tar.gz .tar.gz 和 .tgz 压缩 tar zcvf filename.tar.gz dirnam…

Qt字符编码认识

长期以来&#xff0c;很多人都清楚&#xff0c;一旦C源码中直接使用了中文&#xff0c;这样的源码想要跨平台(I18N)会非常困难。 随着&#xff1a; Windows下&#xff1a;MSVC2010成为主流Linux下&#xff1a;GCC升级到4.6 C中的中文问题 才算有了一个比较优雅的、跨平台的Wor…

汉诺塔系列1

Problem Description n个盘子的汉诺塔问题的最少移动次数是2^n-1,即在移动过程中会产生2^n个系列。由于发生错移产生的系列就增加了&#xff0c;这种错误是放错了柱子&#xff0c;并不会把大盘放到小盘上&#xff0c;即各柱子从下往上的大小仍保持如下关系 &#xff1a; nmpq a…

Linux上传文件和下载文件命令行方式

在Linux主机上&#xff0c;安装上传下载工具包rz及sz 只需要安装下面这个包即可&#xff0c;执行下面的安装命令 yum install -y lrzsz 上传 在Linux命令行下输入rz&#xff0c; rz 1 输入rz命令后&#xff0c;会弹出对话框&#xff0c;选择你要上传的文件&#xff0c;选…

带你玩转Visual Studio——带你理解多字节编码与Unicode码

转自&#xff1a;http://blog.csdn.net/luoweifu/article/details/49382969 上一篇文章带你玩转Visual Studio——带你跳出坑爹的Runtime Library坑帮我们理解了Windows中的各种类型C/C运行时库及它的来龙去脉&#xff0c;这是C开发中特别容易误入歧途的一个地方&#xff0c;我…

汉诺塔系列2

Problem Description 用1,2,...,n表示n个盘子&#xff0c;称为1号盘&#xff0c;2号盘,...。号数大盘子就大。经典的汉诺塔问 题经常作为一个递归的经典例题存在。可能有人并不知道汉诺塔问题的典故。汉诺塔来源于 印度传说的一个故事&#xff0c;上帝创造世界时作了三根金刚石…

如何快速高效读懂1本书

——半研墨拆书2《如何阅读1本书》 作为运营来讲&#xff0c;除了在实操中学习&#xff0c;还要扩充视角&#xff0c;开阔思维&#xff0c;建立更多解决问题的思考框架&#xff0c;这就要求我们&#xff0c;要多读书&#xff0c;还要会读书。就是说&#xff0c;我们在快速阅读的…

计算组合数

Problem Description 计算组合数。C(n,m),表示从n个数中选择m个的组合数。 计算公式如下&#xff1a; 若&#xff1a;m0&#xff0c;C(n,m)1 否则&#xff0c; 若 n1&#xff0c;C(n,m)1 否则&#xff0c;若mn&#xff0c;C(n,m)1 否则 …

查看mysql表的数据和结构

一、查看数据表列表的语法结构 SHOW TABLES [FROM db_name] [LIKE ‘pattern’ | WHERE expr] FROM db_name表示&#xff0c;我们不仅可以查看当前数据库里的数据表&#xff0c;还可以查看别的数据库里的数据表 mysql> show tables; —————- | Tables_in_test | ——…

c#学习书籍

楼主这些年一直追随微软技术&#xff0c;也看了不少书籍&#xff0c;整理出一些个人认为不错的经典&#xff0c;推荐给各位阅读&#xff0c;以共同进步。 推荐顺序是由浅入深&#xff0c;深入浅出。 《Professional C#》&#xff0c;中文名《C#高级编程》&#xff0c;最新版本&…

查并集

The White Belt Good developers who are familiar with the entire stack know how to make life easier for those around them. 博客园首页新随笔联系订阅管理 随笔 - 159 文章 - 0 评论 - 0用于不相交集合的数据结构——查并集 不相交集合数据结构的概念和操作&#xff1…

对象和json相互转换

对象转换成JSON时候&#xff1a; net包下的JSON JSONObject.toBean(类名,类的全名); org包下: JSONObject json new JSONObject(类名);//这样在转成json时候里面多出了一个class:类名。 推荐使用:json.put("id", Integer.parseInt(rs.getString(1)));json.put(&quo…

给程序员的10条建议

1. 想清楚&#xff0c;再动手写代码 刚入行的新手&#xff0c;为了展示自己的能力&#xff0c;拿到需求迫不及待地就开始上手写代码&#xff0c;大忌&#xff01; 2. 不交流&#xff0c;就会头破血流 不爱说话和沟通&#xff0c;需求都理解错误了&#xff0c;最后做出来才发现…

传说中的800句记7000词

登录 | 注册 ZHB_McCoy的专栏 目录视图摘要视图订阅 一键管理你的代码 攒课--我的学习我做主 【hot】直播技术精选 id"cpro_u2392861_iframe" src"http://pos.baidu.com/sczm?sz300x250&rdid2392861&dc2&diu2392861&dri0&dis0&…

当爬虫遇到需要动态ip才能获取资源的时候如何解决?

因为有的网站是拦截相同的ip重复爬去网站中的资源&#xff0c;因此比较好的解决办法是利用手机频繁的去切换飞行模式来拿到切换ip的效果&#xff0c;但是缺点是频繁切换ip特别麻烦。然后我们组长给了我们解决方案就是伪装成浏览器去访问网页资源&#xff0c;因此只需要在http请…

怎样才算得上合格的程序员

转自&#xff1a;http://blog.csdn.net/B9Q8e64lO6mm/article/details/78829370 最近同一部门另一个项目组的一位程序员被“主动离职”了&#xff0c;虽然我未曾与这个程序员共事过&#xff0c;但是听过一两次他的内部分享&#xff0c;感觉技术还是挺厉害的。后来与一个消息灵通…

Linuxs查看进程,杀死进程

1.查进程 ps命令查找与进程相关的PID号&#xff1a; ps a 显示现行终端机下的所有程序&#xff0c;包括其他用户的程序。 ps -A显示所有程序。 ps c 列出程序时&#xff0c;显示每个程序真正的指令名称&#xff0c;而不包含路径&#xff0c;参数或常驻服务的标示。 ps -e此…