2010-06-24 15 views
10

HTTP POST denerken karakteri kodlayamaz Python'da bir parametre olarak bir unicode dizesiyle (u '\ xe4 \ xf6 \ xfc') bir HTTP POST yapmaya çalışıyorumUnicodeEncodeError: 'ascii' codec'i Python

UnicodeEncodeError: ama aşağıdaki hatayı alıyorsunuz 'ascii' codec bileşeni Bu (httplib2 birlikte) HTTP POST yapmak için kullanılan kod

http = httplib2.Http() 
userInfo = [('Name', u'\xe4\xf6\xfc')] 
data = urlencode(userInfo) 

resp, content = http.request(url, 'POST', body=data) 

Herhangi etmektir karakteri

kodlamak olamaz Bunu çözmek için nasıl fikirler?

cevap

13

Python Unicode nesnelerini doğrudan POST yapamazsınız. Bunu bir UTF-8 dizesi olarak kodlamanız gerekir:

name = u'\xe4\xf6\xfc'.encode('utf-8') 
userInfo = [('Name', name)] 
+0

Daha önceki kodlamayla ilgili bir sorunla karşılaştım, ancak sonra bunu satır içi yaptım. Bunun gibi: userInfo = [('Name', u '\ xe4 \ xf6 \ xfc'.encode (' utf-8 '))] Neyse, hızlı yanıt için teşekkürler – David

+0

Bu yazıya çok benzer bir soru, http://stackoverflow.com/questions/1652904/easy-q-unicodeencodeerror-ascii-codec-cant-encode-character – shahjapan

+1

httplib2 ve httplib belgelerinin bu kısıtlamadan bahsetmesi yararlı olacaktır. – chernevik

İlgili konular