Python 3.6 urllib.request ASCII编码错误:格鲁吉亚字母URL下载图片失败
解决URL含格鲁吉亚字母时的UnicodeEncodeError问题
嘿,这个问题我太熟了!本质是你用的Python库默认用ASCII编码处理URL,但格鲁吉亚字母属于非ASCII字符,直接用肯定会触发编码错误。给你两个实用的解决办法:
方法一:用urllib.parse.quote()手动编码URL
把URL里包含格鲁吉亚字母的部分单独拿出来,用quote()函数转换成符合URL标准的编码格式,再拼接成完整URL。修改后的示例代码如下:
import urllib.request from urllib.parse import quote # 拆分URL,分离基础地址和带特殊字符的路径 base_url = "你的网站基础地址,比如https://example.com/" image_path = "带格鲁吉亚字母的图片路径,比如სურათი.jpg" # 对路径部分进行URL编码 encoded_path = quote(image_path) full_url = base_url + encoded_path # 现在执行下载就不会报错了 urllib.request.urlretrieve(full_url, "本地保存的文件名.jpg")
quote()函数会把格鲁吉亚字母转换成%XX格式的编码,这样服务器就能正确识别,自然不会触发编码错误。
方法二:改用requests库(更省心)
如果你能安装requests库的话,它会自动处理URL中的非ASCII字符编码,根本不用手动操作,代码更简洁:
import requests url = "包含格鲁吉亚字母的完整图片URL" response = requests.get(url) # 保存图片到本地 with open("本地文件名.jpg", "wb") as f: f.write(response.content)
只要确保requests库已经安装(没装的话用pip install requests搞定),直接跑这个代码就能正常下载了。
内容的提问来源于stack exchange,提问作者irakli
相关产品推荐
相关产品推荐

