Я столкнулся с проблемой, связанной с параметрами POST, отличными от ascii. Вот запрос CURL, который показывает проблему:
curl "http://localhost:8000/api/txt/" -d \
"sender=joe&comments=Bus%20%A3963.33%20London%20to%20Sydney"
Знак фунта в comments
вызывает проблему: когда я пытаюсь сделать что-нибудь с request.POST['comments']
, я получаю:
UnicodeEncodeError: 'ascii' codec can't encode character u'\ufffd' in position 4: ordinal not in range(128)
Например, если я просто попытаюсь записать, что такое comments
:
message = request.POST.get('comments', None)
file('/tmp/comments.txt', 'wb').write(message)
Я получаю вышеуказанную ошибку. Или когда я пытаюсь декодировать его, я получаю ту же ошибку:
try:
message = message.decode('ISO-8859-2','ignore').encode('utf-8','ignore')
except Exception, e:
file('/tmp/ERROR-decode.txt','w').write(str(e))
производит ERROR-decode.txt
с:
'ascii' codec can't encode character u'\ufffd' in position 4: ordinal not in range(128)
Идеи