问题标签 [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 回答
38266 浏览

java - 如何使用 BOM 编码/解码 UTF-16LE 字节数组?

我需要将 UTF-16 字节数组编码/解码到java.lang.String. 字节数组是通过Byte Order Marker (BOM)提供给我的,我需要使用 BOM 对字节数组进行编码。

此外,因为我正在处理 Microsoft 客户端/服务器,所以我想以小端序(连同 LE BOM)发出编码以避免任何误解。我确实意识到使用 BOM 应该可以使用大端,但我不想在 Windows 世界中逆流而上。

例如,这里有一个用 BOM 将 a 编码java.lang.StringUTF-16little endian 的方法:

在 Java 中执行此操作的最佳方法是什么?理想情况下,我想避免将整个字节数组复制到一个新的字节数组中,该数组在开始时分配了两个额外的字节。

java.lang.String解码这样的字符串也是如此,但使用构造函数更简单:

0 投票
6 回答
392337 浏览

python - 在 Python 中写入 UTF-8 文件

我真的很困惑codecs.open function。当我做:

它给了我错误

UnicodeDecodeError:“ascii”编解码器无法解码位置 0 的字节 0xef:序数不在范围内(128)

如果我做:

它工作正常。

问题是为什么第一种方法会失败?以及如何插入 bom?

如果第二种方法是正确的方法,那么使用的意义codecs.open(filename, "w", "utf-8")何在?

0 投票
8 回答
7733 浏览

unicode - 为什么要使用 Unicode 签名字节顺序标记 (BOM)?

这些已经过时了吗?它们似乎是有史以来最糟糕的想法——在文件内容中嵌入任何人都看不到的东西,但会影响文件的功能。我不明白我为什么想要一个。

0 投票
5 回答
83196 浏览

unicode - 使用 awk 去除字节顺序标记

用于删除BOMawk脚本(可能是单行脚本)会是什么样子?

规格:

  • 打印第一个 ( NR > 1)之后的每一行
  • 对于第一行:如果它以#FE #FFor开头#FF #FE,则删除它们并打印其余部分
0 投票
1 回答
1587 浏览

.net - 在 .NET 中,如何将 UTF-16 XMLDocument 写入带有 BOM 的字符串

我正在使用 xml 文档在 .NET 中即时构建XmlDocument 。然后我使用XslCompiledTransform的Transform()方法对其进行转换。

Transform() 方法引发异常,因为在流中发现了无效的编码字符。当我在 Visual Studio 中的 TextVisualizer 的帮助下将字符串复制/粘贴到Altova XmlSpy中时,它没有发现编码问题。

我尝试在文档中添加一个 UTF-16 标头以使其呈现为 UTF-16,并从结果文本中调用 Transform 导致它抱怨 BOM。下面是我使用的代码的简化版本。

因此,我将其写入这样的字符串:

我必须怎么做才能添加 BOM 或让 XslCompiledTransform.Transform 不关心 bom?

0 投票
3 回答
1128 浏览

java - 如何在不使用 BOM 的情况下识别不同的编码?

我有一个文件观察器,它从一个使用 utf-16LE 编码的不断增长的文件中获取内容。写入它的第一个数据位具有可用的 BOM——我使用它来识别针对 UTF-8 的编码(我的大部分文件都是用其中编码的)。我捕获了 BOM 并重新编码为 UTF-8,这样我的解析器就不会崩溃。问题在于,由于它是一个不断增长的文件,因此并非所有数据都包含 BOM。

这是我的问题 - 如果不将 BOM 字节添加到我拥有的每组数据(因为我无法控制源),我可以只查找 UTF-16 \000 中固有的空字节,然后使用那作为我的标识符而不是BOM?这会让我头疼吗?

我的架构涉及一个 ruby​​ Web 应用程序,当我用 java 编写的解析器拾取它时,将接收到的数据记录到一个临时文件中。

现在写我的识别/重新编码代码如下所示:

更新

我想支持欧元、破折号和其他字符之类的东西。我修改了上面的代码看起来像这样,它似乎通过了我对这些字符的所有测试:

大家怎么看?

0 投票
1 回答
2488 浏览

asp.net - 由于 HttpResponse.TransmitFile() 而在 ASP.NET 响应中间的 字符 (UTF-8 BOM)

我看过这篇文章: characters appended to the beginning of each file

在那种情况下,作者是手动读取源文件并写入内容。就我而言,我通过 HttpRequest 将其抽象出来。传输文件():

.js 文件确实以 UTF-8 编码。这意味着  BOM 错误地出现在除第一个文件之外的每个文件的开头。

TransmitFile() 的优点在于 (a) 它抽象了整个读写过程,并且 (b) 它经过优化,不会先将文件读入内存——这在文件很大和/或你有很多并发请求。但另一方面是我无法在没有 BOM 的情况下将其重新编码为 UTF-8。(我想这是一个泄漏抽象的例子。)

有什么优雅的方法可以解决这个问题吗?谢谢!

0 投票
3 回答
1791 浏览

xml - 将 BOM 附加到来自 Django 的 XML 响应

我使用 Djangorender_to_response返回一个 XML 文档。此特定 XML 文档适用于基于 Flash 的图表库。该库要求 XML 文档以 BOM(字节顺序标记)开头。如何让 Django 将 BOM 预先添加到响应中?

它可以将 BOM 插入模板,但不方便,因为 Emacs 每次编辑文件时都会将其删除。

我试图重写render_to_response如下,但它失败了,因为 BOM 是 UTF-8 编码的:

0 投票
2 回答
1475 浏览

asp.net - ASP.NET:Server.Execute() 中的 BOM

我正在使用它来写入响应流:

但是我在响应中得到了一个字节顺序标记。我搞砸了编码吗?如何不退回 BOM?

编辑:对不起鲁本斯,我的第一个例子不正确。

0 投票
2 回答
14549 浏览

c# - 如何使用 C# 从 XmlTextWriter 中删除 BOM?

如何从正在创建的 XML 文件中删除 BOM?

我曾尝试使用新的 UTF8Encoding(false) 方法,但它不起作用。这是我的代码: