博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
urllib.urlencode() 无法encode中文, UnicodeEncodeError
阅读量:5964 次
发布时间:2019-06-19

本文共 910 字,大约阅读时间需要 3 分钟。

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-8import urlliburl_dict = {
"name": u"张三哥", "age": 20} print "http://xxx.yyy.com?%s" % urllib.urlencode(url_dict)

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

#encoding=utf-8import urlliburl_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值是不一样

参考资料:

参考一: 

参考二: 

转载于:https://www.cnblogs.com/AmilyWilly/p/6438547.html

你可能感兴趣的文章
js禁止网页使用右键
查看>>
javascript数学运算符
查看>>
eclipse安装Run-Jetty-Run插件,修改实时生效
查看>>
UIGestureRecognizer
查看>>
敏捷开发方法综述
查看>>
天。鬼。法
查看>>
linux tcp中time_wait
查看>>
shuff打乱排序
查看>>
LC.155. Min Stack(非优化,两个stack 同步 + -)
查看>>
Add Two Numbers
查看>>
Asp.net技巧:gridview获取当前行索引的方法
查看>>
让 vim 在按ESC时自动保存
查看>>
git配置别名
查看>>
SpringMVC配置文件
查看>>
划分数系列问题
查看>>
springboot整合jersey
查看>>
Hibernate实体对象的生命周期(三种状态)
查看>>
23. Merge k Sorted Lists
查看>>
Python:pygame游戏编程之旅七(pygame基础知识讲解1)
查看>>
java B转换KB MB GB TB PB EB ZB
查看>>