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编码转换

时间: 2024-10-27 02:46:12

urllib.urlencode() 无法encode中文, UnicodeEncodeError的相关文章

Python中urllib.urlencode中文字符的一个问题

Django项目在访问Restful service时调用urllib.urlencode编码中文字符串时碰到下面这个错误. v = quote_plus(str(v)) UnicodeEncodeError: 'ascii' codec can't encode characters in position........... 这个错误在windows7的开发环境下没有发生,在Linux生产环境下发生了,比较郁闷,刚上线以后的Bug.Google以后,在一份中文资料(链接见参考资料)中看到U

web.py+mysql插入中文提示query = query.encode(charset) UnicodeEncodeError: 'latin-1' codec can't encode characters in position 86-100

对于中文编码的问题,总会出现各种各样恶心的错误,还不知道应该怎么解决,首先,你从最开头就应该关注编码问题,尽量保证所有的编码方式都是一致的 用python+web.py+mysql来写程序,首先要保证如下几个部分的编码都是对滴 主要包括如下几个部分: 1:python 写的程序, 统一用 utf-8 ,以及重新载入utf-8 2: web.py 的模板, 也就是html程序  统一保存格式为utf-8 , 并且html 申明 <meta http-equiv="Content-Type&q

Python使用urllib时url带中文参数的问题

urllib.request.urlopen(url).read().decode('utf-8') url中带中文参数会出错:UnicodeEncodeError: 'ascii' codec can't encode characters in position 84-86: ordinal not in range(128) 需要对中文进行转码 url = GEOCODE_BASE_URL + urllib.parse.quote('北京市') 文档中对urlib.parse.quote的

asp对中文编码及解码,Decode和Encode中文网址处理

<%'-------------------------------------------------------------------------- '============================================================== '功能:ASP Server对象内置编码函数 '描述:没有对应的解码函数 '============================================================== Functio

python翻译词典实例

#!/usr/bin/python # -*- coding:utf-8 -*- #通过有道翻译来进行内容翻译 import urllib2 import urllib import json #---------翻译方法定义 start---------# def transfer( transferStr , lanSource ='auto' ): data = {'type':lanSource,'i':transferStr,'doctype':'json','xmlVersion':

python3登录网页(163邮箱)实例

# -*- coding: utf-8 -*- import urllibimport http.cookiejar as cookielibimport urllib.request as urllib2 #创建cookiecookie = cookielib.CookieJar()cookieProc = urllib2.HTTPCookieProcessor(cookie)opener = urllib2.build_opener(cookieProc)urllib2.install_op

一个用python实现的东方时尚(驾校)抢课程序

2014-12-23 东方时尚约车还要网上选课,资源太紧张了,于是我决定自己写一个抢票程序来帮我刷票. 第一步,抓包.浏览器登陆选课系统,用抓包工具观察网络行为,这里我用的fildder.这里抓包主要需要获取两个信息,一是浏览器发送了哪几条url请求,二是获得http报文的头部以及post出去的data内容和格式. 第二步,模拟登陆.将抓取来的头部抄过来,让python模拟浏览器进行登陆,输入用户名和密码.这里登陆需要验证码,先来一个手工识别的,让python把获取到的.jpg文件保存到本地,然

我跟有道翻译干起来了

1.先把需要用的url和queryString以及报头准备好 <pre>url = http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule&sessionFrom User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/5

UnicodeEncodeError: &#39;ascii&#39; codec can&#39;t encode characters

今天用python3.x在解析网页时发生了个错误:"UnicodeEncodeError: 'ascii' codec can't encode characters",下面是错误信息: C:\Python\Python35-32\python.exe C:/Users/XXXXXXX/XXXX.py Traceback (most recent call last):   File "C:/Users/XXXXXXX/XXXX.py", line 22, in &