我正在通过 php 生成一个 csv 文件,以便通过浏览器下载。考虑到将使用的目标系统可以是 mac、unix、windows 等,我是否需要在开头插入字节顺序标记字节?
问问题
190 次
2 回答
3
不,您不需要这样做。
字节顺序标记用于一些 Unicode 编码,即 UTF-8、UTF-16 和 UTF-32 来确定编码是否真的是 Unicode。
在 UTF-16 中,它用于区分 UTF-16 和 UCS-2(UTF-16 的子集)。
它在 UTF-8 和 UTF-32 中是可选的,但有效。但是,在 UTF-8 中,它可能会导致兼容性问题。引用一个措辞良好的维基百科条目:
如果与现有程序的兼容性并不重要,则 BOM 可用于识别文件是 UTF-8 还是传统编码,但这仍然存在问题,因为在许多情况下添加或删除 BOM 而不实际更改编码,或各种编码连接在一起。检查文本是否有效 UTF-8 比使用 BOM 更可靠。
由于这些原因,我反对在 UTF-8 中使用 BOM。
于 2011-02-16T02:44:17.393 回答
0
关于原始问题,这实际上取决于编写文件时的编码方式。如果它是 utf-8 编码的,我会添加 BOM。如果文件中只有 ASCII 字符,则 BOM 可能不存在,因为没有序列。但是,如果文件中包含 utf-8 序列,则更容易检测 BOM 以遍历整个文件并检查有效序列。即使您检测到单个序列,它仍然可能是 0x7F 以上的单个字符。
于 2013-09-17T08:31:41.453 回答