UnicodeEncodeError: кодек ascii не может кодировать символ при попытке HTTP POST в Python

Я пытаюсь выполнить 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

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

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