标头内容类型字符集 UTF-8 和 BOM

Posted

技术标签:

【中文标题】标头内容类型字符集 UTF-8 和 BOM【英文标题】:Header Content Type Charset UTF-8 with BOM 【发布时间】:2013-06-29 18:18:44 【问题描述】:

我目前正在制作一些必须下载和上传的文件。该文件有一些不同的编码,并且仅在使用带有 BOM 的 UTF-8 打开文件时才有效。

目前我正在使用这个简单的标头header('Content-Type: text/html; charset=utf-8');,但我怎样才能更改设置,以便文件文件将被视为带有 BOM 的 UTF-8。

希望得到一些帮助。 谢谢!

【问题讨论】:

【参考方案1】:

绝对没有必要在 HTML 文件中包含 BOM。 (如果它真的包含不同的编码,那么 UTF-8 BOM 会被破坏,所以听起来你有点困惑。)

如果您希望将文件保存到磁盘并在不需要 UTF-8 的地方使用,您也可以添加一个元元素来指示编码:

<meta http-equiv='Content-Type' content='text/html; charset=utf-8'>

如果实际上您使用的是与 UTF-8 不同的编码,而不是 BOM,只需更改元属性中的值即可。

如果你真的必须有一个 BOM,那么你需要确保它是你输出的第一件事,例如

echo "\xEF\xBB\xBF";

请参阅 How can I output a UTF-8 CSV in php that Excel will read properly? 以了解实际有意义的示例。

【讨论】:

谢谢伙计!很高兴知道它不需要。我会尝试只使用 UTF-8。 谢谢,十六进制给出了正确的魔法咒语。微软应该修复他们的应用程序。

以上是关于标头内容类型字符集 UTF-8 和 BOM的主要内容,如果未能解决你的问题,请参考以下文章

仅在内容类型 === JSON 时更改 Java 过滤器中的内容类型或字符编码

如何强制浏览器在内容类型 http 标头中设置字符集

OAuth2RestTemplate 将字符集添加到内容类型标头中

utf8_unicode_ci 的 JSON 数据的 PHP 标头中的内容类型字符集 - Ajax 调用

无法处理该消息,因为内容类型“应用程序/xml”不是预期的类型“应用程序/soap + xml”;字符集 = utf-8 '

Zend_Http_Client - 为啥我的 POST 请求发送错误的内容类型标头?