龙卷风与Unicode
龙卷风框架能接受地址中的Unicode字符吗?
#coding: utf-8 (there is # dont know how to show it here...)
import tornado.ioloop
import tornado.web
class Abdou(tornado.web.RequestHandler):
def get(self):
self.write("hi")
miaw = tornado.web.Application([
(u'/ééé', Abdou),
])
if __name__ == "__main__":
miaw.listen(8000)
tornado.ioloop.IOLoop
在Flask框架中是可以的!!!
from flask import Flask
miaw = Flask(__name__)
@miaw.route(u'/ééé')
def abdou():
return "hi!"
if __name__ == '__main__':
miaw.run()
补充说明:使用像/hello world这样的转义字符时也会遇到同样的问题,但在Flask中是可以正常工作的!
补充说明2:感谢“wisty”的编辑 :) 现在看起来更专业了,像代码一样 :p
2 个回答
0
看起来这是个 bug:
而且这个链接已经失效了 :( 404 错误跟着我到这里来了!
1
看看 tornado.escape.url_escape(value)
和 tornado.escape.url_unescape(value, encoding='utf-8')
这两个函数。
大概是这样的:
#coding: utf-8 (there is # dont know how to show it here...)
import tornado.ioloop
import tornado.web
class Abdou(tornado.web.RequestHandler):
def get(self):
self.write("hi")
miaw = tornado.web.Application([
(tornado.escape.url_escape(u'/ééé'), Abdou),
])
if __name__ == "__main__":
miaw.listen(8000)
tornado.ioloop.IOLoop
你可能还想获取用户输入的链接。你可以这样做:
class Page(tornado.web.RequestHandler):
def get(self,title):
title = tornado.escape.url_unescape(title, encoding='utf-8')
self.write(title)
miaw = tornado.web.Application([
(tornado.escape.url_escape(u'/ééé/(*.)'), Page),
])
# you can get /ééé/page_name, where page_name can be unicode
if __name__ == "__main__":
miaw.listen(8000)
tornado.ioloop.IOLoop