2010-07-04 2 views
0

Я пытаюсь сделать это в VBScript/JScript, чтобы избежать повторного кодирования.
Должен ли я судить, есть ли «%»? Использует ли «%» другое использование в URL-адресе?
Спасибо.Как определить, был ли URL уже закодирован с помощью encodeURI?

Редактировать: О, исходная функция кодирования может не быть encodeURI.
Я пытаюсь собрать URL-адреса из браузера и хранить их после кодирования с помощью encodeURI.
Но если URL уже закодирован, другая кодировка сделает это неправильно.

ответ

0

перебирать символы в URL-адресе и тестировать символы, которые не разрешены в URL-адресе.

если есть какие-либо кодировки. , если нет никаких незаконных символов, не имеет значения

+0

Звучит здорово. Эмм ... какие персонажи незаконны? Я знаю, что даже encodeURI и URLencode имеют разные мнения. – phoenies

+1

, как определено в RFC1738, безопасными символами являются 0-9a-zA-Z и $ -_. +! * '(), Все остальное небезопасно. –

+0

Нелегальные: #% & * {} \: < >?/+ Существуют и другие правила, такие как отсутствие последовательных периодов, заканчивающихся на период и т. Д. –

0

Я могу попробовать его декодировать и сравнить результат с исходным URL. Если он изменился или был короче по длине, ваш исходный URL-адрес, вероятно, уже был закодирован.

+0

Спасибо. Таким образом, URL, который не был закодирован, не может быть расшифрован. Это всегда так? – phoenies

+0

Я не на это 100%, но это может быть хорошей отправной точкой. Вы можете столкнуться с некоторыми забавными URL-адресами, которые не подходят; возможно, некоторые, которые должны иметь в них закодированные символы. –

+0

ОК. Это то, что я получил: decodeURI выдает неизвестную ошибку 800A13A1. Google говорит, что это потому, что строка, подлежащая расшифровке, содержит недопустимые символы. – phoenies

Смежные вопросы