python3中的urlretrieve对于中文url是如何处理的?

因为HTTP协议是ASCII编码的形式呀~~~

所以。。。中文必须要变成字母然后才能正确编码为字节流,然后发到网络中。。。

比如:

https://img.581ss.com/tubaobao/这是一段中文/1.jpg

在浏览器中需要变成:

https://img.581gg.com/tubaobao/%E8%95%BE%E4%B8%9D%E5%85%94%E5%AE%9D%E5%AE%9D%E5%90%88%E9%9B%862013/%E9%BB%91%E8%89%B2%E6%B3%B3%E8%F1%A3%E5%A4%A7%E6%B5%B7%E5%A5%97%E5%9B%BE/2.jpg

这样的编码才能被urlretrieve识别下载:

1,所以要用quote方法

from urllib.parse import quote

url='http://www.example.com/api.php?text=中文在这里'

# 不带附加参数print('\n不带附加参数:\n%s'%quote(url))

# 附带不转换字符参数

print('\n附加不转换字符参数:\n%s'%quote(url,safe='/:?='))

作者:登峰

链接:https://www.zhihu.com/question/22899135/answer/119088406

来源:知乎

2,或者自己编写中文处理函数

def is_chinese(uchar):

if uchar >=u'\u2E80' and uchar <=u'\uFE4F':

return True

    else:

return False

调用:

url_after=str()

for c in url_before:

    if is_chinese(c):

        c = quote(c)

    url_after+= c

你可能感兴趣的:(python3中的urlretrieve对于中文url是如何处理的?)