繁体   English   中英

Flask(使用jinja2)可以使用“windows-1251”编码渲染模板吗?

[英]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"放在参数中,但没有成功。

这里有更多信息,这可能很有用:

  • 该前端将在带有 IIS6 的 Windows Server 2003 上运行,
  • 唯一合适的浏览器是IE,因为CR8 Web Component Server 使用ActiveX 组件。 (还有一个 java 插件,但由于某种原因它根本不起作用)。

所以我需要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')

看起来像个肮脏的骇客,但行得通。

如果您使用烧瓶,请阅读以下内容:

http://flask.pocoo.org/docs/unicode/

在我的例子中,loaders.py 在几个地方有一个硬编码“utf-8”,我用“windows-1251”替换了它,对我来说一切正常!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM