UTF-8和不带BOM的UTF-8有什么区别?

没有BOM的 UTF-8和UTF-8有什么区别? 哪个更好?


#1楼

我从另一个角度看待这个问题。 我认为带有BOM的UTF-8更好,因为它提供了有关文件的更多信息。 仅当遇到问题时,我才使用不带BOM的UTF-8。

我长时间在页面上使用多种语言(甚至是西里尔字母 ),并且在保存文件时不使用BOM并重新打开它们以使用编辑器进行编辑(如cherouvim所述),某些字符已损坏。

请注意,当您尝试使用UTF-8编码保存新创建的文件时,Windows的经典记事本会自动使用BOM表保存文件。

我个人保存带有BOM的服务器端脚本文件(.asp,.ini,.aspx) 带有BOM的 .html文件


#2楼

具有BOM的UTF-8可以更好地识别。 我已经很难得出这个结论。 我正在一个项目中,结果之一是一个CSV文件(包括Unicode字符)。

如果保存的CSV文件没有BOM表,则Excel会认为它是ANSI并显示乱码。 一旦在前面添加了“ EF BB BF”(例如,通过使用带UTF-8的记事本重新保存它;或带UTF-8的BOM一起使用Notepad ++),Excel就会很好地打开它。

RFC 3629建议将BOM表字符添加到Unicode文本文件中:“ UTF-8,ISO 10646的转换格式”,2003年11月,位于http://tools.ietf.org/html/rfc3629 (此最新信息位于: http://www.herongyang.com/Unicode/Notepad-Byte-Order-Mark-BOM-FEFF-EFBBBF.html


#3楼

当您要显示以UTF-8编码的信息时,您可能不会遇到问题。 例如,将HTML文档声明为UTF-8,您将在浏览器中显示包含在文档正文中的所有内容。

但是,当我们在Windows或Linux上拥有文本, CSV和XML文件时,情况并非如此。

例如,Windows或Linux中的文本文件是可以想到的最简单的东西之一,它不是(通常)UTF-8。

将其另存为XML并声明为UTF-8:

<?xml version="1.0" encoding="UTF-8"?>

即使已声明为UTF-8,它也不会正确显示(不会被读取)。

我有一串包含法语字母的数据,需要将其另存为XML以供联合使用。 无需从一开始就创建UTF-8文件(更改IDE中的选项和“创建新文件”)或在文件的开头添加BOM表

$file="\xEF\xBB\xBF".$string;

我无法将法语字母保存在XML文件中。


#4楼

将BOM放入UTF-8编码的文件中至少存在三个问题。

  1. 不包含任何文本的文件不再为空,因为它们始终包含BOM。
  2. 包含UTF-8 ASCII子集内的文本的文件本身不再是ASCII,因为BOM不是ASCII,这会使某些现有工具失效,并且用户无法替换这些旧版工具。
  3. 无法将多个文件连接在一起,因为现在每个文件的开头都有一个BOM。

而且,正如其他人提到的那样,拥有BOM表来检测某物是否为UTF-8既不充分,也没有必要:

  • 这是不够的,因为任意字节序列可能会以构成BOM的确切序列开头。
  • 这是没有必要的,因为您可以像读取字节一样将它们当作UTF-8读取。 如果成功,按照定义,它是有效的UTF-8。

#5楼

如果您在HTML文件中使用UTF-8,在同一页面中使用塞尔维亚西里尔字母,塞尔维亚拉丁语,德语,匈牙利语或其他外来语言,则带有BOM的UTF更好。 我的观点是(计算机和IT行业已有30年的历史)。


#6楼

如上所述,带有BOM的UTF-8可能会导致非BOM感知(或兼容)软件出现问题。 我曾经使用基于Mozilla的KompoZer编辑了编码为UTF-8 + BOM的HTML文件,因为客户端要求使用所见即所得程序。

保存时,布局总是会被破坏。 我花了一些时间来解决这个问题。 这些文件在Firefox中运行良好,但是在Internet Explorer中显示CSS异常,再次破坏了布局。 摆弄了几个小时的CSS链接无济于事之后,我发现Internet Explorer不喜欢BOMfed HTML文件。 再也不。

另外,我刚刚在Wikipedia中找到了这个:

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值