Я столкнулся с данной проблемой используя urllib.urlencode() для формирования POST запроса с юникодом внутри. Кто-то возможно сталкивался с этой ошибкой и при других обстоятельствах.
Проблема заключается в том, что urlencode применяет ко всем элементам передаваемого dict'а метод str() который и генерирует ошибку, когда ему пытаются скормить под видом строки не ASCII символы.
В Django проблема решается очень просто. Прежде чем отдавать параметры POST запроса в urlencode() нужно обработать их методом smart_str():
Источники:
Проблема заключается в том, что urlencode применяет ко всем элементам передаваемого dict'а метод str() который и генерирует ошибку, когда ему пытаются скормить под видом строки не ASCII символы.
В Django проблема решается очень просто. Прежде чем отдавать параметры POST запроса в urlencode() нужно обработать их методом smart_str():
>>> import urllib >>> from django.utils.encoding import smart_str >>> >>> data = {'name' : u'Иван'} >>> data = smart_str(data) >>> print urllib.urlencode(data)
Источники: