2010-06-24 15 views
10

que estoy tratando de hacer un POST HTTP con una cadena Unicode (u '\ xe4 \ xf6 \ xfc') como un parámetro en Python , pero recibo el siguiente error:UnicodeEncodeError: códec 'ascii' no puede codificar caracteres cuando se trata de un HTTP POST en Python

UnicodeEncodeError: códec 'ascii' no puede codificar caracteres

Este es el código utilizado para hacer el HTTP POST (con httplib2)

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

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

Cualquier ideas sobre cómo resolver esto?

Respuesta

13

No puede enviar Unicode de Python objetos directamente. Debería codificarlo como una cadena UTF-8 primero:

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

Tuve algún problema con la codificación anterior, pero luego lo hice en línea. De esta manera: userInfo = [('Nombre', u '\ xe4 \ xf6 \ xfc'.encode (' UTF-8'))] De todas formas gracias por una respuesta rápida – David

+0

Su pregunta muy similar de este post, http://stackoverflow.com/questions/1652904/easy-q-unicodeencodeerror-ascii-codec-cant-encode-character – shahjapan

+1

sería de gran ayuda si la documentación para httplib2 y httplib mencionó esta restricción. – chernevik

Cuestiones relacionadas