zl程序教程

您现在的位置是:首页 >  后端

当前栏目

js编码、解码函数介绍及其使用示例

JS编码 使用 函数 介绍 示例 及其 解码
2023-06-13 09:15:05 时间
js对文字进行编码涉及3个函数:escape,encodeURI,encodeURIComponent,相应3个解码函数:unescape,decodeURI,decodeURIComponent

1、传递参数时需要使用encodeURIComponent,这样组合的url才不会被#等特殊字符截断。
例如:
<scriptlanguage="javascript">document.write("<ahref="http://passport.baidu.com/?logout&aid=7&u="+encodeURIComponent
("http://cang.baidu.com/bruce42")+"">退出</a&gt;");</script>

2、进行url跳转时可以整体使用encodeURI
例如:Location.href=encodeURI(http://cang.baidu.com/do/s?word=中国&ct=21);
使用这个方法编码的字符在PHP中可以使用urldecode()函数反编码

3、js使用数据时可以使用escape
escape对0-255以外的unicode值进行编码时输出%u****格式,其它情况下escape,encodeURI,encodeURIComponent编码结果相同。
escape不编码字符有69个:*,+,-,.,/,@,_,0-9,a-z,A-Z
encodeURI不编码字符有82个:!,#,$,&,",(,),*,+,,,-,.,/,:,;,=,?,@,_,~,0-9,a-z,A-Z
encodeURIComponent不编码字符有71个:!,",(,),*,-,.,_,~,0-9,a-z,A-Z

附上这个三个函数的介绍:

escape方法
对String对象编码以便它们能在所有计算机上可读,
escape(charString)
必选项charstring参数是要编码的任意String对象或文字。
说明
escape方法返回一个包含了charstring内容的字符串值(Unicode格式)。所有空格、标点、重音符号以及其他非ASCII字符都用%xx编码代替,
其中xx等于表示该字符的十六进制数。例如,空格返回的是"%20"。
字符值大于255的以%uxxxx格式存储。
注意escape方法不能够用来对统一资源标示码(URI)进行编码。对其编码应使用encodeURI和encodeURIComponent方法。

encodeURI方法
将文本字符串编码为一个有效的统一资源标识符(URI)。
encodeURI(URIString)
必选的URIString参数代表一个已编码的URI。
说明
encodeURI方法返回一个编码的URI。如果您将编码结果传递给decodeURI,那么将返回初始的字符串。encodeURI方法不会对下列字符进行编码:":"、
"/"、";"和"?"。请使用encodeURIComponent方法对这些字符进行编码。

encodeURIComponent方法
将文本字符串编码为一个统一资源标识符(URI)的一个有效组件。
encodeURIComponent(encodedURIString)
必选的encodedURIString参数代表一个已编码的URI组件。

说明
encodeURIComponent方法返回一个已编码的URI。如果您将编码结果传递给decodeURIComponent,那么将返回初始的字符串。因为encodeURIComponent
方法对所有的字符编码,请注意,如果该字符串代表一个路径,例如/folder1/folder2/default.html,其中的斜杠也将被编码。这样一来,当该编码结
果被作为请求发送到web服务器时将是无效的。如果字符串中包含不止一个URI组件,请使用encodeURI方法进行编码。