2014-02-26 3 views
2

내 url 변수에 독일어 umlaute를 가져 오려고합니다. 이 잘 작동CherryPy URL 인코딩 문제

class Root: 
    def echo(self,input): 
     return input 
    echo.exposed = True 

if __name__ == '__main__': 
    cherrypy.quickstart(Root(),'/') 

:

http://localhost:8080/echo/?input=äöüß 

결과 : äöüß

그러나 내가하려고하면

http://localhost:8080/echo/äöüß 

를 내가 얻을 : à 이 내 코드입니다 ¤Ã¶Ã¼Ã

누군가는 이유를 알고 있으며 어떻게 해결할 수 있습니까?

import cherrypy 

class Root: 
    def echo(self,input): 
     return bytes(input, 'Latin-1') 
    echo.exposed = True 

if __name__ == '__main__': 
    cherrypy.quickstart(Root(),'/') 

또는 이렇게 :

+0

웹 서버에서 예외가 발생합니까? – Matt

+0

아니,하지만 그것은 latin1로 변환되는 것 같아요 ... 만약 내가 ** input.encode ('latin1') ** _http : // localhost : 8080/echo/äöüß_하지만 ??? _http : // localhost : 8080/echo /? input = äöüß_ – Daveman

답변

2

이 시도

class Root: 
    @tools.encode(encoding='Latin-1') 
    def echo(self,input): 

Cherrypy는 것입니다 기본 인코딩 UTF-8. 희망이 도움이됩니다!

+0

예, 작동하지만 멀리 utf-8 입력을받을 수 있습니까? – Daveman

+0

글쎄, 필자의 상위 예제에서는 입력을 utf-8로 올리려하는데, 나는 Latin-1로 바꾼다. 당신은 또한 이것을 할 수 있습니다 : cherrypy.config [ "tools.encode.encoding"] = "Latin-1" –

+0

사람이 읽을 수있는 URL을 사용하면 utf-8에서 올바르게 표시되지 않는 이유는 무엇입니까? – Daveman