gpt4 book ai didi

xml - 将 BOM 前置到来自 Django 的 XML 响应

转载 作者:行者123 更新时间:2023-12-04 07:03:44 26 4
gpt4 key购买 nike

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

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

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

def render_to_response(*args, **kwargs):
bom = kwargs.pop('bom', False)
httpresponse_kwargs = {'mimetype': kwargs.pop('mimetype', None)}
s = django.template.loader.render_to_string(*args, **kwargs)
if bom:
s = u'\xef\xbb\xbf' + s
return HttpResponse(s, **httpresponse_kwargs)

最佳答案

您并不是真正在谈论 BOM(字节顺序标记),因为 UTF-8 没有 BOM。从您的示例代码中,由于某些莫名其妙的原因,库希望文本前面有 3 个垃圾字节。

您的代码几乎是正确的,但您必须将字节添加为字节,而不是字符。尝试这个:

def render_to_response(*args, **kwargs):
bom = kwargs.pop('bom', False)
httpresponse_kwargs = {'mimetype': kwargs.pop('mimetype', None)}
s = django.template.loader.render_to_string(*args, **kwargs)
if bom:
s = '\xef\xbb\xbf' + s.encode("utf-8")
return HttpResponse(s, **httpresponse_kwargs)

关于xml - 将 BOM 前置到来自 Django 的 XML 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1423916/

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