Я пишу небольшой трекер Bittorrent поверх структуры Django, как часть более крупного проекта. Однако у меня возникли проблемы с декодированием параметра "info_hash" в запросе на объявление.
По сути, uTorrent принимает хеш SHA1 рассматриваемого торрента, а URL кодирует его шестнадцатеричное представление, которое затем отправляется трекеру в GET-запросе в качестве параметра info_hash.
Инфо-хэш
A44B44B0EE8D85A9F7135489D522A19DA2C87C91
кодируется как:
%a4KD%b0%ee%8d%85%a9%f7%13T%89%d5%22%a1%9d%a2%c8%7c%91
Однако Django декодирует это в строку Unicode:
u'\ufffdKD\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\x13T\ufffd\ufffd"\ufffd\ufffd\ufffd\ufffd|\ufffd'
вместо строкового литерала, подобного этому:
\xa4KD\xb0\xee\x8d\x85\xa9\xf7\x13T\x89\xd5"\xa1\x9d\xa2\xc8|\x91
Как я могу остановить Django от попытки перевести info_hash в Unicode, чтобы я мог затем его заключить в кавычки? Моя цель - получить строковый литерал, который я затем смогу кодировать в шестнадцатеричную строку.
Есть мысли? Извиняюсь, если есть какая-то концепция о кодировании, которую я пропускаю. Спасибо!