保存图像时文件名有奇怪的编码

Filename has weird encoding when saving image

我正在网络抓取,当我保存图像时,似乎在保存文件时更改了编码。例如,在文件名中,'é' 变为 '%c3%a9'。我能够使用此功能捕获所有这些更改:

def unify_filename(string):  
    return string.lower().strip().replace(',', '%2c').replace('%', '%25').replace('ô', '%b3%b4'). \
        replace('é', '%c3%a9').replace('++', '+').replace('è', '%c3%a8').replace('î', '%c3%ae'). \
        replace('#', '%23').replace(';', '%3b').replace('%2b%2b', '%2b'). \
        replace('&', '%26').replace('+', '%2b').replace(' ', '+').replace('[', '%5b'). \
        replace(']', '%5d').replace('%2b', '+').replace('%40', '@').replace('®', '%c2%ae'). \
        replace('%7e', '').replace('~', '').replace('%27', '').replace('©', '%c2%a9'). \
        replace("'", '').replace('ô', '%b3%b4').replace('+', ' ').replace('^', '%5e'). \
        replace('$', '%24').replace('  ', ' ').replace('`', '%60').replace('’', '%e2%80%99')

有没有更简单的方法?这是我不知道的编码吗?

您可以使用 urllib parser. you can use the unquote() 函数处理这些值。

使用下面的代码:

import urllib.parse
print(urllib.parse.unquote('%c3%a9', encoding='utf-8'))

输出:

'é'