non-ascii POST 매개 변수를 다루는 문제가 있습니다. comments
의 파운드 기호가 문제를 일으키는Django : non-ascii 매개 변수 다루기
curl "http://localhost:8000/api/txt/" -d \
"sender=joe&comments=Bus%20%A3963.33%20London%20to%20Sydney"
: 여기에 문제를 보여주는 CURL 요청의 내가 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)
내가 위의 오류가 발생합니다.
'ascii' codec can't encode character u'\ufffd' in position 4: ordinal not in range(128)
아이디어 :
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
을 생산 : 나는 그것을 해독하려고 할 때 또는, 저도 같은 오류가?
미안 스테파노, 나는 그것이 장고의 맥락에서 분명하다는 것을 분명히하지 않았다. django는 이미 POST 매개 변수를 따옴표로 묶지 않으므로 'comments'는 따옴표로 묶지 않은 문자열입니다. – Parand
@Parand : 아 좋아. 충분히 공정하다. 당신이받는 것은 적절한 인코딩을 통해 유니 코드로 변환되어야하는 문자열입니다. 나는 의도적으로 명확한'unicode (str, "encoding")'을 사용한다. 그런 다음,이 유니 코드 객체를 utf-8로'.encode()'할 수 있습니다. –
아니요. 이미 수신 된 문자열이 잘못 '유니 코드'로 변환되었으므로 U + FFFD가 있습니다. –