[英]Can flask (using jinja2) render templates using 'windows-1251' encoding?
我为相当古老的报告系统编写了一个简单的前端,它使用 Crystal Reports 8 Web Component Server。 我需要向这个 Web 组件发出“POST”请求。 当我从使用标准 UTF-8 编码的页面发出请求时,所有表单数据也以 UTF-8 传递。 这就是问题所在,因为 CR8 Web Component Server 不理解 UTF-8(或者我错了?)。 我试图将accept-charset="ISO-8859-5"
和accept-charset="windows-1251"
放在参数中,但没有成功。
这里有更多信息,这可能很有用:
所以我需要flask(jinja2)使用'windows-1251'编码来渲染模板,因为参数名称和值可以包含西里尔字符。 有什么办法可以做到这一点吗?
我找到了一个简单的(甚至是愚蠢的)解决方案。 而不是return render_template('template.html', params**)
,我是手动创建请求并将请求数据和标头设置为我所需要的。
它看起来像这样:
r = Response()
r.headers['Content-Type'] = 'text/html; charset=windows-1251'
r.data = render_template('template.html', param1 = data).encode('cp1251')
看起来像个肮脏的骇客,但行得通。
如果您使用烧瓶,请阅读以下内容:
在我的例子中,loaders.py 在几个地方有一个硬编码“utf-8”,我用“windows-1251”替换了它,对我来说一切正常!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.