编解码器无法编码字符u

编解码器无法编码字符u

我在django 1.5的views.py中处理ajax脚本。在构建json文件之后,我必须将username放入cookies中。这个名字有法国口音,像“hervé”。这是我密码的一部分

if user.is_active:
            login(request, user)
            name = 'Hervé'
            jsondict['success'] = True
            jsondict['text']['welcome'] = 'Bienvenue, %s!' % name

            if name:
                fn = name
    response = HttpResponse(json.dumps(jsondict, cls=DjangoJSONEncoder, ensure_ascii=False),mimetype='application/json')
    if fn:
        set_cookie(response,"full_name",fn)

出现的错误是
UnicodeEncodeError: 'ascii' codec can't encode character u'\xe9' in position 4: ordinal not in range(128)

为了解决这个问题,我使用unicode(),decode()。。。但没什么变化。错误是否来自set_cookie()函数?或者json文件?我能做些什么来解决它?
这是set_cookies函数
def set_cookie(response, key, value, days_expire = 7):
import datetime
from django.conf import settings
if days_expire is None:
    max_age = 365 * 24 * 60 * 60  #one year
else:
    max_age = days_expire * 24 * 60 * 60
expires = datetime.datetime.strftime(datetime.datetime.utcnow() + datetime.timedelta(seconds=max_age), "%a, %d-%b-%Y %H:%M:%S GMT")
response.set_cookie(key, value, max_age=max_age, expires=expires, domain=settings.SESSION_COOKIE_DOMAIN, secure=settings.SESSION_COOKIE_SECURE or None)

最佳答案

好的,现在我修好了。把这个解释器放在views.py的头上

# -*- coding: latin-1 -*-

在你的职责范围内,
name = 'Hervé'
name.decode('latin-1').encode('ascii','xmlcharrefreplace') //add this line
jsondict['success'] = True
jsondict['text']['welcome'] = 'Bienvenue, %s!' % name

关于python - UnicodeEncodeError:'ascii'编解码器无法编码字符u'\xe9',我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15800185/

10-09 17:27