【问题标题】:Tornado and Unicode龙卷风和 Unicode
【发布时间】:2011-11-11 21:13:18
【问题描述】:

tornado 接受地址中的 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 中它可以工作!

NB2:感谢“wisty”的编辑 :) 现在它作为代码看起来更专业:p

【问题讨论】:

  • 没有问题。要使代码突出显示,只需缩进代码即可。
  • 谢谢 :D 现在我只用了 5 分钟就搞定了几件事情!!!再次感谢你:)

标签: python unicode tornado


【解决方案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

【讨论】:

  • 对不起,但我是初学者,在 Flask(也是初学者)中,我只是运行 /something 并成功了 :) 那么我该如何更改这里的代码?
  • 对不起,第一个没用,不知道为什么!!!我什至添加了 import tornado.url_escape 但没有任何改变,总是找不到 404 :(
【解决方案2】:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-27
    • 1970-01-01
    • 2010-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多