UnicodeEncodeError:' ascii'编解码器不能对字符' \ xa9'进行编码。蟒蛇3

时间:2017-11-22 11:08:29

标签: python utf-8

这是我的代码:

import urllib.request

imglinks = ["http://www.katytrailweekly.com/Files/MalibuPokeMatt_©Marple_449-EDITED_15920174118.jpg"]

for link in imglinks:
    filename = link.split('/')[-1]
    urllib.request.urlretrieve(link, filename)

它给了我错误:

  

UnicodeEncodeError:' ascii'编解码器无法对字符' \ xa9'

进行编码

我该如何解决这个问题?我尝试使用.encode('utf-8'),但它给了我:

  

TypeError:不能在类字节对象上使用字符串模式

1 个答案:

答案 0 :(得分:1)

这里的问题不是编码本身,而是传递给'request'的正确编码。

您需要引用网址,如下所示:

import urllib.request
import urllib.parse

imglinks = ["http://www.katytrailweekly.com/Files/MalibuPokeMatt_©Marple_449-EDITED_15920174118.jpg"]

for link in imglinks:
    link = urllib.parse.quote(link,safe=':/') # <- here
    filename = link.split('/')[-1]
    urllib.request.urlretrieve(link, filename)

这样,您的©符号就会像网络服务器一样编码为%C2%A9

指定safe参数是为了防止quote:之后修改http

由您来修改代码以使用正确的原始文件名保存文件。 ;)