问题标签 [byte-order-mark]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
410 浏览

perl - 为什么我不能在 Perl 中使用 map 函数从一个简单的数据文件创建一个好的散列?

帖子已更新。如果您已经阅读过发布的问题,请跳到解决方案部分。谢谢!

这是展示我的问题的最小化代码:

用于测试的输入数据文件已被 Window 的内置记事本保存为 UTF-8 编码。它有以下三行:

Perl 脚本文件也被 Window 的内置记事本保存为 UTF-8 编码。它包含以下代码:

在输出中,哈希表似乎没问题:

但实际上不是,因为我只得到两个值而不是三个:

Perl 给出以下警告信息:

Use of uninitialized value $hash{"abacus"} in string at C:\test2.pl line 11, <$i n> line 3.

问题出在哪里?有人可以解释一下吗?谢谢。

解决方案

数以百万计的感谢你们所有人:) 现在终于找到了罪魁祸首并且问题变得可以解决:) 正如@Sinan 有见地指出的那样,我现在 100% 确定导致我上面描述的问题的罪魁祸首是两个BOM 字节,记事本在保存为 UTF-8 时添加到我的数据文件中,并且不知何故 Perl 无法正确处理。虽然很多人建议我应该使用 "<:utf8" 和 ">:utf8" 来读写文件,但问题是这些 utf-8 配置并不能解决问题。相反,它们可能会导致其他一些问题。

要真正解决这个问题,我真正需要的是添加一行代码来强制 Perl 忽略 BOM:

现在,输出正是我所期望的:

请注意,脚本保存为 UTF-8 编码,并且代码不必包含任何 utf-8 标签,因为输入文件和输出文件都预先保存为 UTF-8 编码。

最后再次感谢大家。感谢@Sinan 的深刻指导。没有你的帮助,我会在黑暗中呆多久,天知道。

注意 为了澄清一点,如果我使用:

输出是这样的:

和警告信息:

0 投票
1 回答
3110 浏览

php - 由 Wordpress 自动生成的 PHP 页面中的 BOM

我管理两个不同的博客。它们都是 wordpress 2.8.6(因此它们的源代码完全相同,插件不同),但它们位于两个不同的托管平台(hostmonster.com 和 aruba.it)上。为了解释我的问题,我用 SmartSniff 与每个站点进行了一次会话。

这是hostmonster的转储:

现在来自阿鲁巴:

(注:a6 和 100b 是 SmartSniff 报告的数据包大小)

好的,最大的区别是阿鲁巴岛前面的三个点<!DOCTYPE。它们是 UTF-8 BOM (0xef 0xbb 0xbf)。

作为两台服务器上相同的 PHP 源,为什么它只出现在一台服务器上?

内容已生成,因此帖子作者不能故意插入 BOM,并且我已验证该模板也是无 BOM 的。服务器上自然有不同的 PHP 和 Apache 版本......我可以检查或设置什么来诊断和解决问题?顺便说一句,我不想​​要 BOM。

提前谢谢了。

0 投票
11 回答
85194 浏览

java - 字节顺序标记搞砸了 Java 中的文件读取

我正在尝试使用 Java 读取 CSV 文件。一些文件的开头可能有一个字节顺序标记,但不是全部。当存在时,字节顺序与第一行的其余部分一起被读取,从而导致字符串比较出现问题。

有没有一种简单的方法可以在存在字节顺序标记时跳过它?

0 投票
1 回答
1089 浏览

xml - MSXMLWriter60 不为 UTF-16 编码输出 byteOrderMark

我正在使用“如何使 XMLDOMDocument 包含 XML 声明?”中看到的代码变体。(也可以在MSDN上看到。如果我将编码更改为“UTF-16”,人们会认为它会输出为 UTF-16……而且它“确实”……通过查看文本编辑器中的输出; 但是在十六进制编辑器中检查它,缺少字节顺序标记(尽管属性设置为 true),并且 XML 编辑器将文档拒绝为无效的 UTF-16,因为缺少 BOM。

我在看什么?

输出如下所示:


为什么我使用 VB6?它实际上是在 VBA(同一代,VB6 的小子集)中,用作 EMC-Captiva 的 InputAccel/FormWare 的脚本语言,因此不能切换。

0 投票
3 回答
4734 浏览

utf-8 - 如何避免无意中将 UTF-8 文件编码为 ASCII/ANSI?

在编辑编码为 UTF-8 w/o [spurious] BOM 的文件的过程中,内容可能会缺少 ASCII 或 ANSI 范围之外的任何 Unicode 字符。在下一次重新打开文件时,一些文本编辑器 (Notepad++) 会将其解释为 ASCII/ANSI 编码并照此打开。不知道用户将继续编辑的更改,现在添加非 ANSI Unicode 字符,但呈现但无用,因为保存在 ANSI。可以存在一个菜单选项 (Notepad++) 以将 ANSI 文件打开为 UTF-8 w/o BOM,但会导致无意中使用 Unicode 编码覆盖 ANSI 文件的相反问题。

0 投票
3 回答
2562 浏览

unicode - UTF-16LE 与 UTF32-LE 的 Unicode BOM

用于 UTF16-LE 和 UTF-32LE 的字节顺序标记之间似乎存在歧义。特别是,考虑一个包含以下 8 个字节的文件:

如何判断此文件是否包含:

  1. UTF16-LE BOM (FF FE) 后跟 3 个空字符;或者
  2. UTF32-LE BOM (FF FE 00 00) 后跟一个空字符?

此处描述了 Unicode BOM:http: //unicode.org/faq/utf_bom.html#bom4但没有讨论这种歧义。我错过了什么吗?

0 投票
3 回答
1101 浏览

iphone - NSXMLParser 和 BOM 字节

由于来自某个服务器的 php 查询,我正在获取我的 xml 文件。当我将结果数据打印到控制台时,我得到了结构良好的 xml 文件。当我尝试使用 NSXMLParser 解析它时,它返回带有代码 4 的 NSXMLParserErrorDomain - 空文档。我看到它无法解析的 xml 在关闭 xml 标头的“>”标记后立即具有 BOM(字节顺序标记)序列。问题是如何摆脱 BOM 序列。我试图用这样的 BOM 字节创建一个字符串:

但由于某种原因它不起作用。有 xml,在根元素之后有这个序列。在这种情况下,NSXMLParser 成功解析了 xml。Safari 会忽略这些字符。所以 Xcode 调试器。请帮忙!

谢谢,

纳瓦

0 投票
1 回答
990 浏览

css - 如何强制 Visual Studio 在 UTF-8 编码的 CSS 文件的开头遵守 BOM?

显然,当 Visual Studio 2008 (SP1) 打开 CSS 文件时,它不会将 UTF8 BOM 标记识别为 BOM,而是将其解释为文本(前三个字符显示为,但不应显示)。虽然 VS 通常不会使用 BOM 保存 CSS 文件,但我希望 IDE 能够识别并尊重 BOM。

这可能是 Visual Studio 的一个错误,但是,有人知道解决方法吗?

0 投票
1 回答
3283 浏览

xml - 从字节数组加载 XMLDocument(可选地包含 BOM 字符)

我在这里看到了几篇关于从某些数据源加载 XML 文档的帖子,这些数据源的数据具有 Microsoft 专有的 UTF-8 前导码(例如,这个)。
但是,我找不到不涉及手动剥离 BOM 字符的优雅(并且有效!)解决方案。

例如,有这个例子

...但它仍然不断抛出“无效数据”异常。

我的问题是我有一个巨大的字节数组,有时包含 BOM,有时不包含。我需要在 XMLDocument 中加载它。而且我不相信我是必须照顾“帮助”字节的人。

0 投票
21 回答
707979 浏览

unicode - UTF-8 和没有 BOM 的 UTF-8 有什么区别?

UTF-8 和没有BOM的 UTF-8 有什么不同?哪个更好?