I can confirm this is a bug. Steps to recreate:
1) Unzip a copy of web2py_src_2.2.1.zip into a fresh directory
2) Start web2py e.g. cd web2py; python web2py.py -a test
3) Use the appadmin interface to create a new simple app e.g. myapp
4) Create a routes.py file containing
routers = dict(
BASE = dict(
default_application = 'myapp',
),
)
5) In a browser (I used Chrome) visit the invalid url
"http://localhost:8000/myapp/default/aaaaaaaaaa/Abbbbbbbb%20Lccc%20-%20Pddddddd%20GA%20Deeeeee%20(ffff%20ffff%20A).pdf"
Result is python is now in a tight processor loop.
--