【问题标题】:UnicodeEncodeError: 'ascii' codec can't encode character '\xa9' python 3UnicodeEncodeError:“ascii”编解码器无法编码字符“\xa9”python 3
【发布时间】:2018-05-06 02:27:11
【问题描述】:

这是我的代码:

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: cannot use a string pattern on a bytes-like object

【问题讨论】:

标签: python utf-8


【解决方案1】:

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

你需要将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 参数是为了防止quotehttp 之后也修改:

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

【讨论】:

  • 谢谢你,你拯救了我的一天
猜你喜欢
  • 2015-10-21
  • 2010-12-11
  • 2012-07-02
  • 2010-12-11
  • 2019-09-01
  • 2021-09-28
  • 2017-02-01
相关资源
最近更新 更多