我使用的是repoze.bfg v1.3和变色龙v2 (zpt模板)。在呈现模板时,我在编码方面遇到了困难:
UnicodeDecodeError:'ascii‘编解码器无法解码位置9的字节0xc5 :序数不在范围内(128个)
如何将repoze.bfg配置为使用变色龙进行utf-8编码?
我在Configurator中添加了以下内容:
config.add_settings(encoding="UTF-8")
config.add_settings(default_encoding="UTF-8")也帮不上忙。
发布于 2012-01-13 02:07:39
问题在变色龙使用的translationstring库中。虽然变色龙可以配置为使用不同的编码,但它把它得到的数据直接传递到翻译字符串。
构造函数中的Translationstring,其中它试图从它获得的数据中生成unicode。当数据是非ascii字节序列(python2.x中的str)时,就会出现错误。
解决方案是始终使用以下diff将unicode传递给转换字符串或更新库本身:
65c69
< self = unicode.__new__(self, msgid)
--- patch
> try:
> self = unicode.__new__(self, msgid, "utf8") # FIXED~
> except Exception as e:
> self = unicode.__new__(self,msgid)发布于 2011-05-25 01:53:40
0xc5使用拉丁文1,python在utf-8中无法在不知道源编码的情况下转换它。
如果此字符串来自cgi窗体,请确保服务器设置正确的编码。
提示:
lynx -dump -mime_header http://url_of_the_page_with_the_form_to_compile|less找些类似的东西
内容-类型: text/html;charset=UTF-8
如果字符集不是utf-8,您的配置是错误的,也许apache会重写您的设置?
https://stackoverflow.com/questions/6115889
复制相似问题