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