JS中encodeURI()、decodeURI()、
encodeURIComponent。。。
编码解码问题。
解决这个问题⼤家⼀般都使⽤encodeURI或者encodeURIComponent⽅法,在这⾥做⼀下总结:
⾸先看看各个⽅法不同浏览器的⽀持程度
函数描述FF N IE
解码某个编码的 URI。14 5.5
在线url网址编码解码解码⼀个编码的 URI 组件。14 5.5
把字符串编码为 URI。14 5.5
把字符串编码为 URI 组件。14 5.5
总结⼀下:
1.,和是对字符进⾏编码。
2.,和是对相应编码过的字符进⾏解码。
3. ⽅法不会对 ASCII 字母和数字进⾏编码,也不会对这些 ASCII 标点符号进⾏编码: - _ . ! ~ * ' ( ) 。
该⽅法的⽬的是对 URI 进⾏完整的编码,因此对以下在 URI 中具有特殊含义的 ASCII 标点符号,encodeURI() 函数是不会进⾏转义的:;/?:@&=+$,#
进⾏url跳转时可以整体使⽤encodeURI
例如:Location.href=encodeURI();
4.⽅法不会对 ASCII 字母和数字进⾏编码,也不会对这些 ASCII 标点符号进⾏编码: - _ . ! ~ * ' ( ) 。
其他字符(⽐如:;/?:@&=+$,# 这些⽤于分隔 URI 组件的标点符号),都是由⼀个或多个⼗六进制的转义序列替换的。
传递参数时需要使⽤encodeURIComponent,这样组合的url才不会被#等特殊字符截断。
例如:<script language="javascript">document.write('<a href="passport.baidu/?logout&aid
=7&u='+encodeURIComponent ("cang.baidu/bruce42")+'">退出</a>');</script>
5.形象的解释,对全⾓⽇韩汉字其作⽤。对URL中的特殊字符不做处理,.对url中的特殊字符做出来,将他们转化成对应的ASCII码
6.这些⽅法都是JavaScript 函数,也就是只能够在JavaScript中使⽤。
7.在service端解码,不使⽤和的,可以使⽤fw = new Bytes("ISO-8859-1"), "UTF-8");java语法,其他语⾔略有不同。
扩展:
尽量避免使⽤escape()和unescape()⽅法。
escape ⽅法
escape对0-255以外的unicode值进⾏编码时输出%u****格式,其它情况下escape,encodeURI,encodeURIComponent编码结果相同。escape不编码字符有69个:*,+,-,.,/,@,_,0-9,a-z,A-Z
最多使⽤的应为encodeURIComponent,它是将中⽂、韩⽂等特殊字符转换成utf-8格式的url编码,所以如果给后台传递参数需要使⽤encodeURIComponent时需要后台解码对utf-8⽀持(form中的编码⽅式和当前页⾯编码⽅式相同)
unescape ⽅法
从⽤ escape ⽅法编码的 String 对象中返回已解码的字符串。
function unescape(charString : String) : String
参数
charString
必选。要解码的 String 对象或⽂本。
备注
unescape ⽅法返回⼀个包含 charstring 内容的字符串值。所有以 %xx ⼗六进制形式编码的字符都⽤ ASCII 字符集当中等效的字符代替。以%uxxxx 格式(Unicode 字符)编码的字符⽤⼗六进制编码 xxxx 的 Unicode 字符代替。注意 unescape ⽅法不应⽤于解码“统⼀资源标识符”(URI)。请改⽤ decodeURI 和 decodeURIComponent ⽅法。
decodeURI ⽅法
返回⼀个已编码的统⼀资源标识符 (URI) 的⾮编码形式。
function decodeURI(URIstring : String) : String
参数
URIstring
必选。表⽰编码 URI 的字符串。
备注
使⽤ decodeURI ⽅法代替已经过时的 unescape ⽅法。
decodeURI ⽅法返回⼀个字符串值。
如果 URIString ⽆效,将发⽣ URIError。
decodeURIComponent ⽅法
返回统⼀资源标识符 (URI) 的⼀个已编码组件的⾮编码形式。
function decodeURIComponent(encodedURIString : String) : String
必选的 encodedURIString 参数是⼀个表⽰已编码的 URI 组件的值。
备注
URIComponent 是⼀个完整的 URI 的⼀部分
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论