在 javascript 中有多种对 URL 字符串进行编码的方法:escape()、encodeURI() 和encodeURIComponent()。 这些编码发挥着不同的作用。
escape() 方法:
使用 ISO 拉丁字符集对指定字符串进行编码。 所有空格、标点符号、特殊字符和其他非 ASCII 字符都将被转换为 %xx 格式的字符编码(xx 等于字符集表中字符编码的十六进制数)。 例如,空格字符对应的编码为%20。
不会以这种方式编码的字符:@ * / +
解码函数unescape()
编码URI()方法:
使用UTF-8编码格式将URI字符串转换为转义格式的字符串。
不会以这种方式编码的字符:! @# $& * ( ) = : / ; ? +'
解码函数decodeURI()
编码URIComponent()方法:
使用UTF-8编码格式将URI字符串转换为转义格式的字符串。 与encodeURI()相比,该方法会编码更多的字符,例如/等字符。 所以如果字符串包含URI的几个部分,就不能这样编码,否则/字符编码后URL会显示错误。
不会以这种方式编码的字符:! * ( ) '
解码函数decodeURIComponent()
因此javascript url编码javascript url编码,对于英文字符串,如果不想将字符串编码格式转换为UTF-8格式(例如当源页面和目标页面的字符集相同时),则只需使用转义即可。 如果您的页面是GB2312或其他编码,并且接受参数的页面是UTF-8编码,请使用encodeURI或encodeURIComponent。
另外encodeURI/encodeURIComponent是在javascript1.5之后引入的,在javascript1.0中可以进行转义。