2013-02-26 13 views
8

Bu konuda varolan bir başlık olduğunu biliyorum, ancak soru benimkilerden farklı. İşte benim problemim. Kullanıcı adını görüntülemek için içerik işlemcisini kullanıyorum. Çalışıyor ama nöbetim dün bir hata tespit etti.UnicodeEncodeError: 'ascii' codec'i konum 1'de u ' xe9' karakterini kodlayamaz: ordinal aralıkta (128)

UnicodeEncodeError: 1. konumda 'ASCII' Codec karakteri kodlamak olamaz u '\ xe9': nedeni nedir

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,} 

: aralığında değil sıralı (128)

İşte

benim kodudur bunun Ya da onların isimleri için kullanıcı giriş karakteri?

cevap

18

Temel olarak bir kullanıcı giriş sorunu var.

Metin kodlamaları tümüyle "bir şeydir" ve içine girmesi zor, ancak bir somun kabuğunda bir kullanıcı bir ASCII karakteriyle kolayca eşlenemeyen bir Unicode karakterini girmiştir. Buna

name = "{0} {1}".format(request.user.first_name, request.user.last_name) 

:

Bu değiştirerek bunu düzeltebilirsiniz

name = u"{0} {1}".format(request.user.first_name, request.user.last_name) 

Bu ascii olarak tüm normal fonksiyonlarını içeren bir unicode dizesi olarak dize (tedavi etmek için Python söyler dize). Cevabınızı işaretlemeden önce

+0

. Şablonda {{user.get_full_name}} kullanımı tamam mıdır ve ascii hatası tespit edilmez mi? – catherine

+1

Evet, sorun değil. Django'nun yerleşik nesneleri her zaman (genellikle) unicode dizeleri döndürür. –

+0

Bilgi için teşekkürler ok – catherine

İlgili konular