GET 요청을 처리하는 앱이 있습니다. 와일드 카드로 %
을 사용하여 쿼리하는 패턴을 보유하는 변수를 읽었습니다. URL에 patt=M%
이 포함되어 있으면 M
으로 시작하는 모든 이름을 가져옵니다. 검색 패턴으로 %D0
을 사용하려고 시도 할 때까지 모두 정상적으로 작동했습니다.URL의 처리 백분율 기호
The given query string could not be processed. Query strings for this resource must be encoded with 'utf8'.
가의 %D0
문자열이 아닌 유니 코드 문자 코드로 취급되고있다 : 나는 다음과 같은 오류가 발생합니다.
이제 질문은 : %D0
과 같은 패턴을 처리하는 방법은 무엇입니까? 다른 말로하면, 이것을 인코딩하지 않고 어떻게 3 개의 문자로 처리 할 수 있을까요? 내가 지금까지 발견했습니다
한 가지 해결 방법은 patt=%25D
를 사용하여 같은 %
대신 %25
을 사용하는 것입니다 -하지만 실제로 핸들 요청을 필요 것입니다.
편집 : 예입니다. tutorial의 기본 cherrpy 예를 들어 봅시다. 난 그냥 params
를 처리하고 myvar
의 값을 반환하도록 수정했습니다
import cherrypy
class HelloWorld(object):
@cherrypy.expose
def index(self, **params):
#return "Hello world!"
return cherrypy.request.params['myVar']
if __name__ == '__main__':
cherrypy.quickstart(HelloWorld())
당신이 URL을 열 수 있습니다 실행 일단 - 기본적으로 그것을가 http://localhost:8080/?myVar=blahblahblah
그것은 페이지가 열립니다에서 시작해야하며 반환 myVar에 값 : blahblahblah
지금, http://localhost:8080/?myVar=%D0
이 나는 것을 방지하고 싶습니다 오류가 발생합니다보십시오.
물론 http://localhost:8080/?myVar=%25D0은 잘 작동하고 %D0
을 보여줍니다.
. urlencoded URI 부분은 모두 cherrypy에 의해 자동으로 해독 된 다음 처리기로 전달됩니다. 일반적으로 브라우저는 URL도 자동으로 urlencode합니다. 그래서 당신이 무엇을 요구하고 있는지 잘 모르겠습니다. 커스텀 클라이언트를 가지고 있다면 물론 적절한 URL을 인코딩해야합니다. – webKnjaZ
목표는 브라우저 주소 표시 줄에 필요한 마스크를 직접 배치하는 것이 었습니다. 맞춤 클라이언트는 없으며 Chrome, Firefox 또는 기타 브라우저 만 사용할 수 있습니다. 하지만 지금은 이것이 가능하지 않다고 생각하기 시작합니다. 그리고 나서 자신을 인코딩하고 리디렉션 할 텍스트 상자를 추가해야합니다. – Maciejg
사용자가 주소 표시 줄에 수동으로 쿼리를 입력하겠습니까? 입력이있는 양식이 있으면 자동으로 인코딩해야합니다. – webKnjaZ