问题标签 [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 投票
1 回答
2433 浏览

xml - 在 Powershell 中使用 BOM 读取 XML 文件

Powershell 似乎在使用带有 unicode BOM 的 xml 文件 - 代码:

因“根级别的数据无效”而爆炸。

有没有一种简单的方法可以在不摆弄文件内容的情况下做到这一点?

0 投票
0 回答
396 浏览

java - InputStream中如何处理BOM

可能重复:
字节顺序标记搞砸了 Java 中的文件读取

我使用上述方法获取位于 SFTP 服务器上的文件中的所有行。该get(path)方法将文件内容作为InputStream. 在我的特殊情况下,该文件是一个包含多个分组订单的 CSV。要检查一行是订单还是新组的标题,我会使用line.startsWith("HDR").

我的问题是我突然发现我的代码跳过了第一行。当我进入调试器时,我发现我的集合中的第一行实际上在HDR部件之前有一些奇怪的字符。我怀疑它是 UTF-8 BOM 或类似的东西。那么,我该如何处理呢?如何正确读取 UTF-8 文件?有没有办法检查它是否真的是 UTF-8 文件?


更新:在 Byte order mark 中找到了一个解决方案,搞砸了 Java 中的文件读取,所以关闭它:)

0 投票
1 回答
111 浏览

text - BOM 是操作系统(Win、Nix ......)还是编码标准(UTF-8、ASCII ......)的概念?

BOM 是 Windows 特性还是某种编码方法的特性?

我在 Windows 7 和 Linux 中编写代码。我可以选择如何编码我的代码。我希望能够在两个操作系统之间切换而不会感到头疼。我有点确定我可以使用 ASCII 访问我需要的所有字符。在操作系统之间传输时我还需要考虑哪些其他问题。哪些文本编码不依赖于标准(ASCII vs Unicode vs UT-8),而是依赖于操作系统(Linux vs. Windows)。

0 投票
1 回答
263 浏览

javascript - 是否存在从 Visual Studio 2008 中创建的 Js 文件中删除 BOM 会导致问题的任何情况?

我需要使用 Rhino 和 Jasmine 自动测试我们的 javascript 文件。我们在visual studio中创建了很多js文件,因此包含一个字节顺序标记......

Rhino 不喜欢这样,并且抱怨 BOM...

如果我只是从 Javascript 文件中删除 BOM,是否有任何情况,无论多么边缘,都会导致 javascript 出现故障?

0 投票
3 回答
7034 浏览

git - 使用 git 签入对 UTF8 BOM 的更改

我不小心从 Windows 签入了一个 utf8 编码的文本文件,而之前没有删除 BOM。现在我尝试在更高版本中删除它并再次签入此更改。似乎 git 忽略了对 BOM 字节的更改。是否有设置让 git 让我按原样签入文件?(我知道在行尾方面存在类似的问题 - 并且有一个设置......)

0 投票
3 回答
3309 浏览

php - CakePHP“无法修改标头信息”问题不是空格

这是错误:

这是代码posts_controller.php

这是第 111 行: echo "\n<pre class=\"cake-debug\">\n";

核心蛋糕文件 debug_print_backtrace()的输出:http: //pastebin.com/fBFrkYsPbasics.php

我已经浏览了我编辑的所有文件(而不是我刚刚烘焙的文件),并且我在 php 括号 () 之外没有任何空格。我使用了这个脚本:Find all files with Blank or WS at BOF or EOF

我的文本编辑器设置为 UTF-8。基本上,当我注释掉第 25 行(上面标有注释)时,问题就消失了。但我应该能够使用重定向......有人能指出我正确的方向吗?

编辑:在上面的 111 处添加了行;编辑 2:添加了 debug_print_backtrace() 的输出

0 投票
1 回答
1521 浏览

.net - 为什么我突然在我的 .NET Web 服务中看到字节顺序标记?

我编写了一个 ASMX Web 服务,它已经在生产环境中运行多年。今天,Java 客户端在尝试解析响应时突然抛出错误。我们将其追踪到出现在 XML 声明之前的 BOM(字节顺序标记):

代码一年多没有改变。Web 服务在 IIS 中的 MOSS 2007 站点下运行,正如您从上面的 HTTP 标头中看到的那样,但有自己的 web.config。

据我们所知,服务器的配置没有任何重大变化,但一定是有什么。有什么想法可能导致这种情况吗?

如果我们无法追踪并恢复更改,下一个问题是,我可以在我的代码中解决这个问题吗?

这是一个带有 .asmx 文件的普通 ASMX Web 服务,如下所示:

和 .asmx.cs 文件,如下所示:

我看过一些讨论 BOM 问题的帖子,但由于我只是返回一个 XML 文档,并且框架正在处理流回客户端的问题,我不确定我是否可以对此做任何事情。

更新:我发现我们的舞台服务器上不存在 BOM 问题。另一个线索可能是;当 soapUI 显示来自 prod 的原始响应时,它具有 BOM 并且 SOAP XML 看起来已格式化(多行和缩进)。当我在舞台上看时,没有 BOM,整个响应都在一条线上。所以其他的也与 BOM 一起添加。

0 投票
1 回答
645 浏览

iphone - 用文件保存 BOM

有人可以告诉我如何用文件保存字节顺序标记(BOM)吗?例如,我现在保存一个文本文件,例如:

我对BOM的理解是:

BOM 字符是 Unicode 字符集中的“ZERO WIDTH NO-BREAK SPACE”字符 U+FEFF。

我有一个 iPhone 应用程序,允许用户将文本保存到 RTF 文件。如果我使用 NSUTF8StringEncoding,一切正常,除非用户有双字节字符,例如日语或中文。简单的答案似乎是使用 NSUTF16StringEncoding 保存文件,这在最近的 RTF 规范中是允许的,除了 Microsoft Word 只能在定义 BOM 时自动打开 UTF-16 文件。

我希望如果我可以设置通用 BOM,我就不需要识别用户的字符集,因为我无法提前知道那是什么。但他们仍然可以打开带有双字节字符的 RTF 文件。

感谢您的建议或见解。

0 投票
2 回答
1944 浏览

.net - 当他的 BaseStream 有 BOM 时,将 StreamReader 返回到开始

我正在寻找一种可靠的方法来将 StreamReader 重置为开始,特别是当他的底层 BaseStream 以 BOM 开头时,但在没有 BOM 时也必须工作。创建一个从流的开头读取的新 StreamReader 也是可以接受的。

可以使用任何编码创建原始 StreamReader,并将 detectEncodingFromByteOrderMarks 设置为 true 或 false。此外,在调用重置之前,可能已经完成或未完成读取。

流可以是随机文本,以字节 0xef,0xbb,0xbf 开头的文件可以是具有 BOM 的文件或以有效字符序列开头的文件(例如,如果使用 ISO-8859-1 编码,则为 ),具体取决于创建 StreamReader 时使用的参数。

我见过其他解决方案,但是当 BaseStream 以 BOM 开头时,它们无法正常工作。StreamReader 记得它已经检测到 BOM,并且执行读取时返回的第一个字符是特殊的 BOM 字符。

我也可以创建一个新的 StreamReader,但我不知道原始 StreamReader 是在 detectEncodingFromByteOrderMarks 设置为 true 还是设置为 false 的情况下创建的。

这是我首先尝试过的:

这些是最好的方法:

最后,我找到了一个解决方案(见我自己的答案),它通过了所有 3 个测试,但我想看看是否有可能更优雅或更快速的解决方案。

0 投票
2 回答
545 浏览

ruby - 如何使用 ruby​​ 将 unicode 添加到 ID3 标签?

我正在尝试将 unicode 标题添加到 MP3 的 ID3 标签(v2.3)。不幸的是,我不知道该怎么做。根据id3.org 的 id3v2 page,Unicode 字符串必须以 Unicode BOM 开头。

我目前正在尝试 id3v2,但标签保存为乱码。

我想用 ruby​​ 来做,但 linux 实用程序也是可以接受的。

更新: 我想出了一个使用id3lib-ruby gem 的解决方案。它在下面列出。