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把所有的语言都统一到了一套编码上。

posted @ 2025-07-02 17:11  takenika  阅读(44)  评论(0)    收藏  举报