我知道有关于此的现有标题,但问题与我的不同。所以这是我的问题。我使用上下文处理器来显示用户名。它正在工作但我的哨兵昨天发现了一个错误。
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,}
这是什么原因?或者用户输入他们姓名的字符?
答案 0 :(得分:18)
这基本上是用户输入问题。
文本编码是一个完整的“事物”,很难进入,但在坚果壳中,用户输入的Unicode字符无法轻易映射到ASCII字符。
您可以通过更改此内容来解决此问题:
name = "{0} {1}".format(request.user.first_name, request.user.last_name)
对此:
name = u"{0} {1}".format(request.user.first_name, request.user.last_name)
这告诉Python将字符串视为unicode字符串(其所有正常函数都是ascii字符串)。