您当前的位置:首页 > 互联网教程

UrlEncode编码 UrlDecode解码

发布时间:2025-05-22 02:41:03    发布人:远客网络

UrlEncode编码 UrlDecode解码

一、UrlEncode编码/ UrlDecode解码

使用URL编码和解码工具,可确保包含中文与特殊符号的URL链接有效。

此工具对JavaScript提交表单时的中文编码问题也提供解决方案,中文需转换为特定编码。

1. ASCII控制字符,不可打印,需转换。

2.非ASCII字符,非法编码范围,转换自然必要。

3.保留字符,“&”,在网址中出现时,是字符还是特殊参数分隔符?需转换以避免歧义。

4.不安全字符,如“空格”,转换为“+”避免混淆。

了解转换需求后,规则简单:根据每个字符对应的编码,不符合范围的转换为%形式,十六进制表示。

URL编码与字符编码关系:urlencode基于字符编码,不同编码类型对应不同urleocode。如GBK编码将产生特定结果。

空格!#$%+@:=?转换为%20%21%23%24%25%2B%40%3A%3D%3F

二、urldecodeproblem解决方法

1、在处理URL编码时,遇到一些困惑。Python的urllib库和JavaScript的encodeURIComponent在编码时并未对空格进行替换,均将其转为'%20'。Python提供了urllib.quote_plus和urlib.unquote_plus来处理空格转为加号,这符合RFC 3986标准。

2、查阅RFC 3986,Scheme names由字母开头,后跟字母、数字、加号、点或破折号。RFC 2396中提到,加号在查询组件中被视为保留字符,无需转义。然而,HTML4文档中指出,只有当content-type为application/x-www-form-urlencoded时,才会对加号进行转义。控制名称和值被转义,空格被替换为加号,然后保留字符也被转义。

3、深入研究后发现,PHP通过rawurlencode()函数实现根据RFC 3986进行URL编码,而rawurldecode()则进行解码。这符合标准,但让人费解的是,为什么大部分开发者都使用urlencode(),而PHP却不反向兼容。PHP的这种设计确实令人费解,但至少实现了标准,这为开发者提供了更多的灵活性和兼容性。

三、server.urlencode编出的码JS怎么解码

1、request("变量")接收到的数据就是已经解码的数据

2、虽然ASP中的request会自动解码经过url编码的字符串,但是Request.BinaryRead(Request.TotalBytes)取得post数据时却不会解码,所以要进行解码

3、下面是我找到的一个ASP中server.urlencode函数的解码函数

4、 strSpecial="!""#$%&'()*+,.-_/:;<=>?@[\]^`{|}~%"

5、 v=eval("&h"+Mid(enStr,i+1,2))

6、 if inStr(strSpecial,chr(v))>0 then

7、 v=eval("&h"+ Mid(enStr,i+1,2)+ Mid(enStr,i+4,2))

8、再附一个编码函数,这个与server.urlencode不一样之处是:server.urlencode会将html或Xml等标签,如<br/>也会进行编码,而下面这个函数不会。我是用下面的进行编码,再解码,因为我用post时用Xml的。

9、 private Function URLEncoding(vstrIn)

10、 If Abs(Asc(ThisChr))<&HFF Then

11、 strReturn= strReturn& ThisChr

12、 Hight8=(innerCode And&HFF00)\&HFF

13、 strReturn= strReturn&"%"& Hex(Hight8)&"%"& Hex(Low8)