Как декодировать (двойную) строку с URL-кодированием в python

Пробовал декодировать строку url-encoded следующим образом

some_string = 'FireShot3%2B%25282%2529.png'
import urllib
res = urllib.unquote(some_string).decode()
res
u'FireShot3+%282%29.png'

Исходная строка FireShot3 (2).png. Любая помощь будет оценена по достоинству.

Ответ: urllib.unquote_plus(urllib.unquote_plus(some_string)) из-за двойного кодирования.


person user1986059    schedule 10.02.2015    source источник
comment
дубликаты stackoverflow.com/questions/16566069/url -decode-utf-8-in-python 100%   -  person Marcus Müller    schedule 10.02.2015
comment
@MarcusMüller: не совсем. Там нет данных в кодировке UTF-8, строка была закодирована в URL дважды.   -  person Martijn Pieters    schedule 10.02.2015
comment
В Python 2, 3 или в обоих? Используемая библиотека fn будет отличаться   -  person smci    schedule 14.11.2017


Ответы (1)


Ваш ввод закодирован двойным. Используя Python 3:

urllib.parse.unquote(urllib.parse.unquote(some_string))

Выход:

'FireShot3+(2).png'

теперь у вас осталось +.

Изменить:

Используя Python 2.7, это должно быть:

urllib.unquote(urllib.unquote('FireShot3%2B%25282%2529.png'))
person Community    schedule 10.02.2015
comment
unqoute_plus обрабатывает символ +. - person user1986059; 10.02.2015