2010-06-24 7 views
10

Sto provando a fare un POST HTTP con una stringa unicode (u '\ xe4 \ xf6 \ xfc') come parametro in Python , ma ricevo il seguente errore:UnicodeEncodeError: il codec 'ascii' non può codificare il carattere quando si prova un POST HTTP in Python

UnicodeEncodeError: codec 'ascii' non può codificare carattere

Questo è il codice usato per fare il POST HTTP (con httplib2)

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

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

Qualsiasi idee su come risolvere questo?

risposta

13

Non è possibile inviare direttamente oggetti Unicode di Python. Dovresti prima codificarlo come stringa UTF-8:

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

Aveva qualche problema con la codifica precedente, ma poi l'ho fatto in linea. In questo modo: userInfo = [('Nome', u '\ xe4 \ xf6 \ xfc'.encode (' utf-8 '))] Comunque grazie per una risposta rapida – David

+0

La sua domanda molto simile di questo post, http://stackoverflow.com/questions/1652904/easy-q-unicodeencodeerror-ascii-codec-cant-encode-character – shahjapan

+1

Sarebbe utile se la documentazione per httplib2 e httplib menzionasse questo vincolo. – chernevik

Problemi correlati