urllib的get请求的quote方法-将汉字转换成unicode编码
import urllib.request
url='https://www.baidu.com/?wd=周杰伦'
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 Edg/136.0.0.0'
}
# 请求对象的定制
request = urllib.request.Request(url=url,headers=headers)
# 模拟浏览器向服务器发送请求
response = urllib.request.urlopen(request)
# 获取
content = response.read().decode()
print(content)
==>
--snip--
File "D:\Anaconda\installed\Lib\http\client.py", line 1265, in _encode_request
return request.encode('ascii')
^^^^^^^^^^^^^^^^^^^^^^^
UnicodeEncodeError: 'ascii' codec can't encode characters in position 9-11: ordinal not in range(128)
报错提示表明只能解释 ASCII ,要url设置为 unicode 编码。
编解码
get请求方式:urllib.parse.quote()
url='https://www.baidu.com/?wd='
# 将周杰伦变成unicode编码的格式
name = urllib.parse.quote('周杰伦')
url = url + name
ASCII码 与 unicode编码
早期计算机只有127个字符编码到计算机里,也就是大小写英文字符、数字和一些符号,这被称为ASCII编码。但是要处理中文需要2个字节,而且还不能和ASCII编码冲突,所以种种制定了GB2312编码,用来把中文便进去。
由于各国有各国的标准就不可避免的出现了冲突,结果就是在多语言混合的文本中,就会显示出来乱码。
为了解决乱码 Unicode产生, Unicode把所有的语言都统一到了一套编码上。

浙公网安备 33010602011771号