保存图像时文件名有奇怪的编码
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'))
输出:
'é'
我正在网络抓取,当我保存图像时,似乎在保存文件时更改了编码。例如,在文件名中,'é'
变为 '%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'))
输出:
'é'