10

I'm trying to do a HTTP POST with a unicode string (u'\xe4\xf6\xfc') as a parameter in Python, but I receive the following error:

UnicodeEncodeError: 'ascii' codec can't encode character

This is to the code used to make the HTTP POST (with httplib2)

 http = httplib2.Http() userInfo = [('Name', u'\xe4\xf6\xfc')] data = urlencode(userInfo) resp, content = http.request(url, 'POST', body=data) 

Any ideas on how to solve this?

1 Answer 1

13

You cannot POST Python Unicode objects directly. You should encode it as a UTF-8 string first:

name = u'\xe4\xf6\xfc'.encode('utf-8') userInfo = [('Name', name)] 
Sign up to request clarification or add additional context in comments.

3 Comments

Had some problem with the encoding earlier, but then i did it inline. Like this: userInfo = [('Name', u'\xe4\xf6\xfc'.encode('utf-8'))] Anyway thanks for a quick response
Its very similar question of this post, stackoverflow.com/questions/1652904/…
It would be helpful if the documentation for httplib2 and httplib mentioned this constraint.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.