Web 应用处理程序中的编码百分比不一致



我正在尝试获取与Google App Engine一起使用的处理程序映射。

正则表达式是这样的:

('/api/1/apps/([-0-9a-zA-Z]+)/values/(.+)', ApiValueHandler)

当 URL 看起来像/api/1/apps/50b96eb0/values/New%20note%2Fhello传递给我的处理程序的值是 New%20note/hello .如您所见,它无法逃脱斜杠,但不是空格。

是否有我在某处缺少的设置,或者我需要自己做一些无法逃避的事情?如果有一些值,它永远不会逃脱,是否有这些值的列表?

更新:

下面是一个测试应用,在装有 Python 2.5 的 Windows 7 上的开发服务器上运行时显示此行为。

main.py

from google.appengine.ext import webapp
from google.appengine.ext.webapp import util
class MainHandler(webapp.RequestHandler):
    def get(self, blah):
        self.response.out.write(blah)
app = webapp.WSGIApplication([('/(.*)', MainHandler)], debug=True)
util.run_wsgi_app(app)

app.yaml

application: engineapp
version: 1
runtime: python
api_version: 1
handlers:
- url: .*
  script: main.py

使用 urllib.unquote 取消转义字符串。

未转义字符由quote定义:字母、数字、_.-和默认安全字符/

http://docs.python.org/library/urllib.html#urllib.quote

只需在匹配的字符串上使用unquote即可。

>>> urllib.unquote('/%24/')
'/$/'

http://docs.python.org/library/urllib.html#urllib.unquote

最新更新