Хорошо, во-первых, похоже, что с вашей кодировкой URL происходят некоторые сумасшедшие вещи.Пример, который вы разместили выше, кажется, имеет двойную кодировку:
>>> x = unescape("%25C3%25BF%25C3%2598%25C3")
>>> x
"%C3%BF%C3%98%C3"
>>> unescape(x)
"ÿÃÃ"
Во-вторых, вы не должны использовать ByteArray.toString()
, если ByteArray
содержит двоичные данные.Вместо этого, если я правильно помню, вы должны использовать ba.readMultiByte(ba.bytesAvailable, "latin1")
, который будет возвращать строку, содержащую необработанные байты.
В-третьих, я чувствую, что ваш класс URLEncoding
является подозрительным.Вместо этого вы можете просто использовать встроенные функции escape
(и unescape
):
>>> escape("\12")
"%0A"