Как я мог проверить, была ли строка уже закодирована?
Например, если я кодирую TEST==
, Я добираюсь TEST%3D%3D
. Если я снова кодирую последнюю строку, я добираюсь TEST%253D%253D
, Я должен был бы знать прежде, чем сделать это, если это уже кодируется...
Я закодировал параметры, сохраненные, и я должен искать их. Я не знаю для входных параметров, что будет они быть - закодированы или нет, таким образом, я должен буду знать, должен ли я закодировать или декодировать их перед поиском.
Расшифровать, сравнить с оригиналом. Если он отличается, кодируется оригинал. Если не отличается, оригинал не кодируется. Но по-прежнему ничего не говорится о том, не закодирована ли вновь декодированная версия. Хорошая задача для рекурсии.
Я надеюсь, что нельзя написать quine в urlencode, иначе этот алгоритм зависнет.
Используйте regexp для проверки, содержит ли ваша строка недопустимые символы (т.е. символы, которые не могут быть найдены в кодированной строке URL, например пробелы).
Joel on software имел решение для этого некоторое время назад - http://www.joelonsoftware.com/articles/Wrong.html
Или вы можете добавить некоторый префикс к строкам.
Вы не можете знать наверняка, если только ваши строки не соответствуют определенному шаблону или вы не отслеживаете свои струны. Как вы сами заметили, закодированная строка также может быть закодирована, поэтому вы не можете быть уверены на 100%, глядя на саму строку.