极念网欢迎您!
js进行URL编码(escape,encodeURI,encodeURIComponent)
作者:翅膀的初衷来源:本站原创发布时间:2014/10/16 23:19:17查看数:22686

如果URL存在汉字时,很容易出现乱码的现象。这是WEB开发中非常常见的一个问题。

不过由于笔者开发中比较注意各类文件的编码统一(即保持所有HTML,CSS,js的文件编码与页中的META中指定的编码一致,后台处理数据的编码一致),所以较少遇到这种问题,偶尔遇到后,也直接用escape编下码便轻松解决。

前二天公司一位做JAVA的同事向我请教同样的问题,于是我在前台给他用escape编了下码后以为问题就解决了,结果发现对方在后台根本无法识别这种编码,而且不是简单的乱码,而是整个程序异常了。

本来想试试自己定个方法来处理,后来发现原来JS中还可以用encodeURI,encodeURICompone来处理URL,我小试了一下,问题得到完美解决。

在这里分享下这三个编码方式的用法。


escape() 方法:

采用ISO Latin字符集对指定的字符串进行编码。所有的空格符、标点符号、特殊字符以及更多有关非ASCII字符都将被转化成%xx格式的字符编码(xx等于该字符在字符集表里面的编码的16进制数字)。比如,空格符对应的编码是%20。

不会被此方法编码的字符有:@*/+

解码方式:unescape()

示例代码:

var code = escape('极念网 www.jiniannet.com'); alert(code); alert(unescape(code))


encodeURI() 方法:

把URI字符串采用UTF-8编码格式转化成%xx格式的字符串。

不会被此方法门编码的字符有:!@#$&*()=:/;?+'

解码方式:decodeURI()

示例代码:

var code = encodeURI('极念网 www.jiniannet.com'); alert(code); alert(decodeURI(code))


encodeURIComponent() 方法:

把URI字符串采用UTF-8编码格式转化成%xx格式的字符串。与encodeURI()相比,encodeURI将对更多的字符停止编码,比如 / 等字符。

不会被此方法门编码的字符有:!*()

解码方式:decodeURIComponent()

示例代码:

var code = encodeURIComponent('极念网 www.jiniannet.com'); alert(code); alert(decodeURIComponent(code))