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"

 以上内容仅供参考,请自己验证,如有问题,欢迎拍砖。