UnicodeEncodeError:'ascii'编解码器无法对位置1中的字符u'\ xe9'进行编码:序数不在范围内(128)

cat*_*ine 8 django

我知道有关于此的现有标题,但问题与我的不同.所以这是我的问题.我使用上下文处理器来显示用户名.它正在工作,但我的哨兵昨天发现了一个错误.

UnicodeEncodeError:'ascii'编解码器无法对位置1中的字符u'\ xe9'进行编码:序数不在范围内(128)

这是我的代码:

def display_name(request):
    try:
        name = "{0} {1}".format(request.user.first_name, request.user.last_name)
        name = name.strip()
        if not name:
            name = request.user.username
    except AttributeError:
        name = None

    return {'display_name': name,}
Run Code Online (Sandbox Code Playgroud)

这是什么原因?或者用户输入他们姓名的字符?

Jac*_*edd 19

这基本上是用户输入问题.

文本编码是一个完整的"事物",很难进入,但在坚果壳中,用户输入的Unicode字符无法轻易映射到ASCII字符.

您可以通过更改此设置来解决此问题

name = "{0} {1}".format(request.user.first_name, request.user.last_name)
Run Code Online (Sandbox Code Playgroud)

对此:

name = u"{0} {1}".format(request.user.first_name, request.user.last_name)
Run Code Online (Sandbox Code Playgroud)

这告诉Python将字符串视为unicode字符串(其所有正常函数都作为ascii字符串).