【问题标题】:UnicodeDecodeError: 'ascii' codec can't decode error when using render_to_response and dajax.assignUnicodeDecodeError: 'ascii' codec can't decode error when using render_to_response 和 dajax.assign
【发布时间】:2011-11-09 21:14:00
【问题描述】:

我是使用 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 以便正确呈现? 有没有更实用的方法来做我在这里想做的事情? 我觉得我错过了一些非常简单的东西,但我无法弄清楚。 提前感谢您提供的任何帮助。

【问题讨论】:

    标签: python django encoding render-to-response


    【解决方案1】:

    我变了:

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

    现在它可以完美运行了。虽然不知道为什么。希望这会对那里的人有所帮助。

    【讨论】:

      猜你喜欢
      • 2013-03-16
      • 2018-07-29
      • 1970-01-01
      • 2015-10-29
      • 2014-02-25
      • 2014-05-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多