Классический ASP не обновлялся в течение почти 20 лет, поэтому Server.URLEncode
по-прежнему использует стандарт RFC-1866 , в котором пробелы кодируются в виде символов +
(что представляет собой похмелье отстарый application/x-www-form-urlencoded
тип носителя), вы должны ошибаться, полагая, что в какой-то момент он кодировал пробелы как %20
, если только вы не можете изменить настройку IIS, о которой я не знаю.
Более современныйязыки используют стандарт RFC-3986 для кодирования URL, поэтому функция Javascript encodeURI
возвращает пробелы, закодированные как %20
.
Обе +
и %20
должны обрабатыватьсяточно так же, когда декодируется любым браузером благодаря обратной совместимости RFC, но обычно считается, что лучше использовать %20
при кодировании пробелов в URL, так как это более современный стандарт сейчас, и некоторые функции декодирования (такие как Javascript decodeURIComponent
)не распознает символы +
как пробелы и не сможет правильно декодировать URL-адреса, использующие их более %20
.
Вы всегда можете использовать пользовательскую функциюион для кодирования пробелов как %20
:
function URL_encode(ByVal url)
url = Server.URLEncode(url)
url = replace(url,"+","%20")
URL_encode = url
end function