zoukankan      html  css  js  c++  java
  • urllib.urlencode() 无法encode中文, UnicodeEncodeError

    urllib.urlencode() 无法encode中文, UnicodeEncodeError, 具体错误内容如下:
    File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib.py", line 1326, in urlencode
    v = quote_plus(str(v))

    UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-2: ordinal not in range(128)

    引发此错误代码:

    #encoding=utf-8
    import urllib
    url_dict = {"name": u"张三哥", "age": 20}
    print "http://xxx.yyy.com?%s" % urllib.urlencode(url_dict)
    

    函数urlencode不会改变传入参数的原始编码,也就是说需要在调用之前将post或get参数的编码调整好,采用encode方法:

    #encoding=utf-8
    import urllib
    url_dict = {"name": u"张三哥".encode('gb2312'), "age": 20}
    print "http://xxx.yyy.com?%s" % urllib.urlencode(url_dict)
    

    Result:

    http://xxx.yyy.com?age=20&name=%D5%C5%C8%FD%B8%E7
    

    用gb2312编码是可以的, 如上所示, 如果我用utf-8来encode呢? 其实也是可以的, 主要看在哪里使用, 注: baidu使用的是gb2312编码,google使用的是utf8编码,两个站点提交到URL中的中文参数的urlencode值是不一样

    参考资料:

    参考一: python urlencode编码

    参考二: python编码转换

  • 相关阅读:
    BZOJ 3218: a + b Problem
    P4542 [ZJOI2011]营救皮卡丘
    P4843 清理雪道
    P4553 80人环游世界
    P4126 [AHOI2009]最小割
    P2619 [国家集训队2]Tree I
    P2469 [SDOI2010]星际竞速
    P2050 [NOI2012]美食节
    易语言入门
    jdbc连接oracle语法
  • 原文地址:https://www.cnblogs.com/AmilyWilly/p/6438547.html
Copyright © 2011-2022 走看看