Flask(使用Jinja2)能否使用“windows-1251”编码渲染模板?

3
我为一个使用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”编码呈现模板,因为参数名称和值可以包含西里尔字母。是否有任何方法可以实现这一点?
3个回答

1
我找到了一个简单(甚至可能是愚蠢的)解决方案。 不使用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')

看起来像是个糟糕的 hack,但它能用。


0

0
在我的情况下,loaders.py 在几个地方都有硬编码的 "utf-8",我将其替换为 "windows-1251",这样一切都正常工作了!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接