python unquote. Как декодировать строку полностью?

Почему unquote не декодирует строку полностью ?

import urllib.parse
result_files = "%d0%be%d1%87%d0%b5%d0%bd%d1%8c%d0%b4%d0%bb%d0%b8%d0%bd%d0%bd%d0%be%d0%b5%d0%bd%d0%b0%d0%b7%d0%b2%d0%b"
p = urllib.parse.unquote(result_files,'utf-8')
print(p)

результат: оченьдлинноеназв�%b


Ответы (1 шт):

Автор решения: Zhihar

код для поиска проблемы:

for i in range(3, len(result_files) + 1, 3):
    text = result_files[:i]
    p = urllib.parse.unquote(text, 'utf-8')
    print(text)
    print(p)
    print()

смотрите, каждому символу отводится 2 символа вида %xx, в результате если вы посмотрите на строку, то увидите, что она не кратна 6 и заканчивается на

%d0%b

т.е. тут явный обрыв строки

должно заканчиваться на

%d0%b0

это буква 'a'

поэтому вы и видите в конце спецсимвол �%b

Но в любом случае, даже если исправить концовку, у вас записано лишь оченьдлинноеназва

→ Ссылка