JS中的编码,解码类型及说明
编码函数 escape encodeURI encodeURIComponent 对应解码函数 unescape
decodeURI decodeURIComponent
escape():
在线url网址编码解码采⽤unicode字符集对指定的字符串除0-255以外进⾏编码。所有的空格符、标点符号、特殊字符以及更多有联系⾮ASCII字符都将被转化成%xx格式的字符编码(xx等于该字符在字符集表⾥⾯的编码的16进制数字) ⽐如: 空格符对应的编码是%20。
该⽅法不会对 ASCII 字母和数字进⾏编码(0-9,a-z,A-Z),也不会对下⾯这些 ASCII 标点符号进⾏编码: * @ - _ + . / 。其他所有的字符都会被转义序列替换。
也就是说escape不编码字符有69个:*,+,-,.,/,@,_,0-9,a-z,A-Z
为防⽌中⽂乱码,js传值要转码,当js ⽤ escape() 转码时,.Net 后台可以⽤ HttpUtility.UrlDecode() 进⾏解码。
例如:
string city = HttpUtility.UrlDecode(HttpContext.Current.Request.Cookies["city"].Value);
encodeURI():
采⽤UTF-8编码格式把字符串作为 URI 进⾏编码。 该⽅法不会对 ASCII 字母和数字进⾏编码(0-9,a-z,A-Z),也不会对这些 ASCII 标点符号进⾏编码: - _ . ! ~ * ' ( )
该⽅法的⽬的是对 URI 进⾏完整的编码,因此对以下在 URI 中具有特殊含义的 ASCII 标点符号,encodeURI() 函数是不会进⾏转义的:;/?:@&=+$,#
也就是说encodeURI不编码字符有82个:!,#,$,&,',(,),*,+,,,-,.,/,:,;,=,?,@,_,~,0-9,a-z,A-Z
提⽰:如果 URI 组件中含有分隔符,⽐如 ? 和 #,则应当使⽤ encodeURIComponent() ⽅法分别对各组件进⾏编码。
js函数:
encodeURI("url")//编码
decodeURI("url")//解码
asp的函数:
Server.UrlEncode("url")//编码
Server.UrlDecode("url")//解码
encodeURIComponent() :
采⽤UTF-8编码格式把字符串作为 URI 组件进⾏编码。
该⽅法不会对 ASCII 字母和数字进⾏编码(0-9,a-z,A-Z),也不会对这些 ASCII 标点符号进⾏编码: - _ . ! ~ * ' ( )
其他字符(⽐如 :;/?:@&=+$,# 这些⽤于分隔 URI 组件的标点符号),都是由⼀个或多个⼗六进制的转义序列替换的。
也就是说encodeURIComponent不编码字符有71个:!, ',(,),*,-,.,_,~,0-9,a-z,A-Z
提⽰:请注意 encodeURIComponent() 函数 与 encodeURI() 函数的区别之处,前者假定它的参数是
URI 的⼀部分(⽐如协议、主机名、路径或查询字符串)。因此 encodeURIComponent() 函数将转义⽤于分隔 URI 各个部分的标点符号。
JS编码:var result=encodeURIComponent(unit);
asp解码:Server.UrlDecode(Request["result"]);
注意: encodeURI和encodeURIComponent会把字符串编码成UTF-8的格式。
总结:
1 传递参数时 使⽤ encodeURIComponent
2 进⾏url跳转时可以整体使⽤encodeURI
3 js使⽤数据时使⽤escape
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论