21

Tried decoding a url-encoded string in the following way

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

Original string is FireShot3 (2).png. Any help would be appreciated.

Answer: urllib.unquote_plus(urllib.unquote_plus(some_string)) due to double encoding.

smci
  • 29,564
  • 18
  • 109
  • 144
user1986059
  • 433
  • 1
  • 3
  • 11

2 Answers2

32

Your input is encoded double. Using Python 3:

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

Output:

'FireShot3+(2).png'

now you have the + left.

Edit:

Using Python 2.7, it would need to be:

urllib.unquote(urllib.unquote('FireShot3%2B%25282%2529.png'))
Lutz Prechelt
  • 32,748
  • 7
  • 56
  • 83
10

urllib.unquote_plus(urllib.unquote_plus(some_string)) FireShot3 (2).png

JWL
  • 12,589
  • 7
  • 54
  • 60
user1986059
  • 433
  • 1
  • 3
  • 11