【问题标题】:Can flask (using jinja2) render templates using 'windows-1251' encoding?烧瓶(使用 jinja2)可以使用“windows-1251”编码渲染模板吗?
【发布时间】:2012-11-09 06:51:44
【问题描述】:

我为相当旧的报表系统编写了一个简单的前端,它使用 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' 编码来渲染模板,因为参数名称和值可以包含西里尔字符。我有什么办法可以做到这一点?

【问题讨论】:

    标签: python crystal-reports flask jinja2


    【解决方案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')
    

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

    【讨论】:

      【解决方案2】:

      如果你使用的是flask,你有没有读过这篇文章:

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-03-25
          • 2014-12-23
          • 1970-01-01
          • 2021-04-02
          • 2014-07-17
          相关资源
          最近更新 更多