2012-11-09 58 views
2

我爲使用Crystal Reports 8 Web組件服務器的漂亮的舊報告系統編寫了一個簡單的前端。 我需要對此Web組件發出'POST'請求。當我使用標準UTF-8編碼頁面發出請求時,所有表單數據也以UTF-8傳遞。這就是問題所在,因爲CR8 Web組件服務器不理解UTF-8(或者它並且我錯了?)。 我試過把accept-charset="ISO-8859-5"accept-charset="windows-1251"放在參數中,並沒有運氣。燒瓶(使用jinja2)可以使用'windows-1251'編碼來渲染模板嗎?

這裏有更多的信息,這可能是有用的:

  • 這前端將工作在Windows Server 2003 IIS6上,
  • 只有合適的瀏覽器是IE,因爲CR8 Web組件服務器使用ActiveX組件。 (還有一個Java插件,但由於某種原因,它根本不起作用)。

因此,我需要燒瓶(jinja2)使用'windows-1251'編碼呈現模板,因爲參數名稱和值可以包含西里爾文字符。它有什麼辦法可以實現這一目標?

回答

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') 

看起來像一個骯髒的黑客,但它的作品。