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

2024-09-30 02:34:28 发布

您现在位置:Python中文网/ 问答频道 /正文

这是我的代码:

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' codec can't encode character '\xa9'

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

TypeError: cannot use a string pattern on a bytes-like object


Tags: 代码importcomhttprequestwwwlinkfiles
1条回答
网友
1楼 · 发布于 2024-09-30 02:34:28

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

您需要引用以下url:

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)

这样,您的©符号将按照web服务器的需要编码为%C2%A9。在

指定safe参数是为了防止quote同时修改http之后的:。在

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

相关问题 更多 >

    热门问题