• get_argument返回unicode数据类型的问题

    get_argument的使用细节
    服务器君一共花费 15.951 ms 进行了 3 次数据库查询,努力地为您提供了这个页面。
    广告很萌的

    在 Tornado 里,self.get_argument返回的数据类型为unicode

    chars = self.get_argument('chars')
    self.write( str(type(chars)) )
    # 输出
    # <type 'unicode'>
    

    get_argument在获取数据的时候,会进行decode("utf-8")操作,因为get_argument最终调用了tornado.escape下面的to_unicode方法,也就是argument会通过decode("utf-8")来转成unicode:

    def to_unicode(value):
        """Converts a string argument to a unicode string.
    
        If the argument is already a unicode string or None, it is returned
        unchanged.  Otherwise it must be a byte string and is decoded as utf8.
        """
        if isinstance(value, _TO_UNICODE_TYPES):
            return value
        assert isinstance(value, bytes)
        return value.decode("utf-8")
    
    # to_unicode was previously named _unicode not because it was private,
    # but to avoid conflicts with the built-in unicode() function/type
    _unicode = to_unicode
    

    get_argument获取数据之后一般需要先使用u.encode('utf-8')转换成string类型后才能使用。

    如果用get_argument无法获取数据,可以用更加原始的方法通过self.request.arguments获取GET或者POST的所有参数字典,这个字典是未经过decode处理的原生参数,每个参数都是字典里面的一项,主要每个参数对应的项都是一个列表。

更多 推荐条目

Welcome to NowaMagic Academy!

现代魔法 推荐于 2013-02-27 10:23   

本章最新发布
随机专题
  1. [Python程序设计] urls.py设置技巧 8 个条目
  2. [移动开发] 从代码角度去认识 Handler 4 个条目
  3. [Python程序设计] Tornado源码解析 23 个条目
  4. [PHP程序设计] httpd.conf设置相关 3 个条目
  5. [移动开发] Android布局基本知识 3 个条目
  6. [PHP程序设计] PHP数组探索 4 个条目
  7. [Linux操作系统] CentOS上使用EPEL Repository 2 个条目
  8. [数据库技术] SQL基础语法 1 个条目
  9. [软件工程与项目管理] 开始使用Git 3 个条目
  10. [软件工程与项目管理] 浏览器的HTML解析器 8 个条目
  11. [PHP程序设计] PHP扩展模块安装 1 个条目
  12. [C语言程序设计] 结构体基本知识 1 个条目
窗口 -- [博客]