2016-11-27 2 views
0

실패 I 병 경로에서 다음과 같은 코드가 있습니다병 - 유니 코드 문자 쿼리 항목을 가져 오기는 브라우저에서 작동 WebTest에와

site = request.query.site 

이 브라우저에서 잘 작동합니다. 나는 URL로 이동합니다 그래서 만약 :

http://myapp.domain/?site=füä 

사이트는 füa 동일합니다. 이 후, 빈되는 사이트에서 발생 병 안에 부호화 에러가 발생할 것이다 WebTest에로 요청을 시뮬레이트하려

:

res = testapp.get("/?site=füä") 

이제 뷰 사이트 내부 빈 문자열 것이다

site = request.query.site 

여기에 무슨 일이 일어나는지 아는 사람이 있습니까?

+0

파이썬 2 또는 3입니까? – tdelaney

+0

파이썬 3이지만 문제는 이미 해결되었습니다. 감사! – Oz123

답변

3

이로 인해 많은 어려움을 겪었으므로 다른 사람들에게 도움이되도록 게시하고 있습니다. 솔루션의 핵심은 브라우저에서 내 테스트 코드로 URL을 입력했기 때문입니다.

res = testapp.get("/?site=füä") 

브라우저 (내 경우에는 firefox 50이지만 현재 크롬도 있음)는 자동으로 해당 문자를 번역하며 모두 괜찮습니다. 병이 FormsDict를 처리하는 방법에 대해 자세히 읽은 후에는 WebTest에서 문제점을 확인했습니다. 조금 더 검색하고 나는 오랜 버그가 거기에 대한 것을 발견 :

res = testapp.get("/?site=f%C3%BC%C3%A4") 
:

quoted urls UnicodeDecodeError

문제를 해결하기 위해, 나는 단순히 인코딩 된 URL에 테스트 코드에서 URL을 변경

비올라! 문제가 해결되었습니다. 이제 사이트가 올바르게 füä으로 설정되었습니다. 나는 HTML URL Encoding Reference을 사용했습니다.

학습 습득. 테스트 코드에서 순진하게 사용자 유니 코드를 사용하지 마십시오.