UnicodeDecodeError:'ascii'编解码器在使用render_to_response和dajax.assign时无法解码错误

时间:2011-11-09 21:14:01

标签: python django encoding render-to-response

我是使用django和dajax的新手,我在使用dajax.assign在使用非英文字符时将html文件加载到另一个html的div中时出现问题,当我将网站语言设置为英语时,它可以正常工作很好,但是当我切换到西班牙语时它没有。

这是我正在做的事情:

我试过了:

dajax.assign('#setttabs-1','innerHTML','abc')

它工作正常。 div正确地显示了文本,但是当我尝试(我正在尝试对网站进行翻译)时:

dajax.assign('#setttabs-1','innerHTML','ábcñ')

它会产生异常:

UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 465: ordinal not in range(128)

我去谷歌做了一些搜索,发现了这个:

dajax.assign('#setttabs-1','innerHTML','ábcñ'.decode('utf-8'))

这再次使它正常工作并正确显示所有字符,问题是我需要在所述div中加载模板,因此以下内容不起作用:

dajax.assign('#setttabs-1','innerHTML',render_to_response('./settings/_change_language.html'.decode('utf-8'), context_instance=RequestContext(request)))

它在尝试加载模板时也抛出上述异常。该模板具有编码元:

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

我的ajax.py也以:

开头
# coding: utf-8

如何告诉dajax将此文件视为utf-8,以便正确呈现? 有没有更实际的方法来做我想在这里做的事情? 我觉得我错过了一些非常简单的东西,但我无法理解。 提前感谢您提供的任何帮助。

1 个答案:

答案 0 :(得分:0)

我改变了:

dajax.assign('#setttabs-1','innerHTML',render_to_response('./settings/_change_language.html'), context_instance=RequestContext(request)))

为:

dajax.assign('#setttabs-1','innerHTML',render_to_string('./settings/_change_language.html'.decode('utf-8'), context_instance=RequestContext(request)))

现在它完美无缺。不知道为什么。希望这能帮助那些人。