gpt4 book ai didi

python - 带有 BOM 的 UTF-8 HTML 和 CSS 文件(以及如何使用 Python 删除 BOM)

转载 作者:太空狗 更新时间:2023-10-29 17:37:17 31 4
gpt4 key购买 nike

首先,介绍一些背景知识:我正在使用 Python 开发 Web 应用程序。我所有的(文本)文件目前都以 UTF-8 格式存储在 BOM 中。这包括我所有的 HTML 模板和 CSS 文件。这些资源作为二进制数据(BOM 和所有)存储在我的数据库中。

当我从数据库中检索模板时,我使用 template.decode('utf-8') 对它们进行解码.当 HTML 到达浏览器时,BOM 出现在 HTTP 响应正文的开头。这会在 Chrome 中生成一个非常有趣的错误:

Extra <html> encountered. Migrating attributes back to the original <html> element and ignoring the tag.

Chrome 似乎生成一个 <html>当它看到 BOM 并将其误认为内容时自动标记,使真正的 <html>标记错误。

那么,使用 Python,从我的 UTF-8 编码模板中删除 BOM 的最佳方法是什么(如果它存在——我以后无法保证)?

对于 CSS 等其他基于文本的文件,主流浏览器是否会正确解释(或忽略)BOM?它们作为没有 .decode('utf-8') 的纯二进制数据发送.

注意:我使用的是 Python 2.5。

谢谢!

最佳答案

既然你说:

All of my (text) files are currently stored in UTF-8 with the BOM

然后使用'utf-8-sig'编解码器对它们进行解码:

>>> s = u'Hello, world!'.encode('utf-8-sig')
>>> s
'\xef\xbb\xbfHello, world!'
>>> s.decode('utf-8-sig')
u'Hello, world!'

它会自动删除预期的 BOM,如果 BOM 不存在也能正常工作。

关于python - 带有 BOM 的 UTF-8 HTML 和 CSS 文件(以及如何使用 Python 删除 BOM),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2456380/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com