UnicodeEncodeError: кодек «ascii» не может кодировать символ при попытке HTTP POST в Python - PullRequest
10 голосов
/ 24 июня 2010

Я пытаюсь выполнить HTTP POST со строкой Unicode (u '\ xe4 \ xf6 \ xfc') в качестве параметра в Python, но получаю следующую ошибку:

UnicodeEncodeError: 'ascii'кодек не может закодировать символ

Это код, используемый для создания HTTP POST (с httplib2)

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

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

Есть идеи, как решить эту проблему?

1 Ответ

13 голосов
/ 24 июня 2010

Вы не можете напрямую POST-объекты Python Unicode.Сначала вы должны закодировать его в виде строки UTF-8:

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