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

1 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)
Run Code Online (Sandbox Code Playgroud)

它给了我错误:

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

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

类型错误:不能在类似字节的对象上使用字符串模式

Pao*_*llo 5

这里的问题不是编码本身,而是传递给“请求”的正确编码。

您需要按如下方式引用网址:

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)
Run Code Online (Sandbox Code Playgroud)

这样您的 © 符号就会%C2%A9按照 Web 服务器的要求进行编码。

safe指定该参数以防止quote在:之后也被修改http。

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