Javascript编码与解码
在javascript中编码和解码主要有6个函数,这几个函数在解决前台传中文字符给后台,以及解决乱码问题很有帮助。下面一一介绍。(为了不以讹传讹请自己验证)
1.编码函数:escape(),对应的解码函数:unescape(),基本不用了。
escape(charString),charstring 参数是要编码的任意 String 对象或文字。
说明
escape 方法返回一个包含了 charstring 内容的字符串值(Unicode 格式)。
escape不编码字符有69个:*,+,-,.,/,@,_,0-9,a-z,A-Z
经过验证如下:@,*不被编码
escape("!")
"%21"
escape("@")
"@"
escape("#")
"%23"
escape("$")
"%24"
escape("^")
"%5E"
escape("&")
"%26"
escape("*")
"*"
escape("(")
"%28"
escape("{")
"%7B"
escape("/")
"/"
escape("?")
"%3F"
escape(" ")
"%20"
注意:escape 方法不能够用来对统一资源标示码 (URI) 进行编码。对其编码应使用 encodeURI 和encodeURIComponent 方法。
2.编码函数:encodeURI(),对应的解码函数:decodeURI()
encodeURI(URIString) ,将文本字符串编码为一个有效的统一资源标识符(URI)。
编码函数 encodeURI():将非字母、数字字符转换成ASCII码,以16进制表示
译码函数 decodeURI():将被encodeURI()编码过的 ASCII码转换成对应的字符
说明
encodeURI 方法返回一个编码的 URI。如果您将编码结果传递给 decodeURI,那么将返回初始的字符串。encodeURI不编码字符有82个:!,#,$,&,',(,),*,+,,,-,.,/,:,;,=,?,@,_,~,0-9,a-z,A-Z。请使用 encodeURIComponent 方法对这些字符进行编码。
验证效果:
encodeURI("http://www.2cto.com/kf/201309/241556.html")
"http://www.2cto.com/kf/201309/241556.html"
encodeURI("http://www.2cto.com/kf/201309/241556.html?a=2")
"http://www.2cto.com/kf/201309/241556.html?a=2"
encodeURI("http://www.2cto.com/kf/201309/241556.html?a=656462")
"http://www.2cto.com/kf/201309/241556.html?a=656462"
encodeURI("http://www.2cto.com/kf/201309/241556.html?a=哈哈")
"http://www.2cto.com/kf/201309/241556.html?a=%E5%93%88%E5%93%88"
3.编码函数:encodeURIComponent(),对应的解码函数:decodeURIComponent()
encodeURIComponent 方法
将文本字符串编码为一个统一资源标识符 (URI) 的一个有效组件。
编码函数 encodeURIComponent():将非字母、数字字符转换成ASCII码,以16进制表示
译码函数 decodeURIComponent():将被encodeURIComponent()编码过的 ASCII码转换成对应的字符
说明
encodeURIComponent 方法返回一个已编码的 URI。encodeURIComponent不编码字符有71个:!, ',(,),*,-,.,_,~,0-9,a-z,A-Z。如果您将编码结果传递给 decodeURIComponent,那么将返回初始的字符串。因为encodeURIComponent 方法对所有的字符编码,请注意,如果该字符串代表一个路径,例如/folder1/folder2/default.html,其中的斜杠也将被编码。这样一来,当该编码结果被作为请求发送到 web 服务器时将是无效的。如果字符串中包含不止一个 URI 组件,请使用 encodeURI 方法进行编码
如下所示:
encodeURIComponent("http://www.2cto.com/kf/201309/241556.html?a=哈哈哈")
"http%3A%2F%2Fwww.2cto.com%2Fkf%2F201309%2F241556.html%3Fa%3D%E5%93%88%E5%93%88%E5%93%88"
以上内容仅供参考,请自己验证,如有问题,欢迎拍砖。
本文出自 “shuizhongyue” 博客,转载请与作者联系!