Ame*_*hel 1 vbscript urlencode asp-classic
鉴于这段代码:
<%
Response.Write Server.URLEncode("a doc file.asp")
%>
Run Code Online (Sandbox Code Playgroud)
它输出一段时间(如 Javascript call encodeURI):
a%20doc%20file.asp
Run Code Online (Sandbox Code Playgroud)
现在,不知为何,我得到:
a+doc+file%2Easp
Run Code Online (Sandbox Code Playgroud)
我不确定我是怎么做到的(可能是文件内容编码为 ANSI/UTF-8)。为什么会发生这种情况,我怎样才能获得 的第一个行为Server.URLEncode,即使用百分比编码?
经典 ASP 近 20 年没有更新,所以Server.URLEncode仍然使用RFC-1866标准,该标准将空格编码为+符号(这是旧application/x-www-form-urlencoded媒体类型的后遗症),您一定误以为它是编码空格如%20在某一点,而不是除非有一个IIS设置,可以改变,我不知道的。
更多现代语言使用RFC-3986标准对 URL 进行编码,这就是 JavascriptencodeURI函数返回编码为%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
Run Code Online (Sandbox Code Playgroud)