我为相当古老的报告系统编写了一个简单的前端,它使用 Crystal Reports 8 Web Component Server。 我需要向该 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”编码呈现模板,因为参数名称和值可以包含西里尔字符。有什么办法可以做到这一点?
请您参考如下方法:
我找到了一个简单的(甚至可能是愚蠢的)解决方案。 而不是 return render_template('template.html', params**),我手动创建请求并将请求数据和 header 设置为我需要的。
它看起来像这样:
r = Response()
r.headers['Content-Type'] = 'text/html; charset=windows-1251'
r.data = render_template('template.html', param1 = data).encode('cp1251')
看起来像一个肮脏的 hack,但它有效。
