3

我为相当古老的报告系统编写了一个简单的前端,它使用 Crystal Reports 8 Web 组件服务器。我需要向这个 Web 组件发出“POST”请求。当我从使用标准 UTF-8 编码的页面发出请求时,所有表单数据也以 UTF-8 格式传递。这就是问题所在,因为 CR8 Web 组件服务器不理解 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'编码来渲染模板,因为参数名称和值可以包含西里尔字符。我有什么办法可以做到这一点?

4

3 回答 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')

看起来像一个肮脏的黑客,但它有效。

于 2012-11-19T01:56:42.173 回答
0

如果您使用的是烧瓶,您是否阅读过以下内容:

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

于 2012-11-09T16:44:08.503 回答
0

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

于 2021-06-26T11:07:55.293 回答