javascript中可用的编码解码函数

本文深入探讨了JavaScript中用于处理特殊字符的编码解码函数,包括escape、encodeURI、encodeURIComponent等,通过实例对比了它们的区别及适用场景,帮助开发者正确选择函数避免URL参数错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在项目实践中可能会遇到一些特殊字符的转义问题,那么这个时候就需要js编码解码函数来解决这些情况了:

特殊字符的含义 
URL编码 

符号解释转义
#用来标志特定的文档位置%23
%对特殊字符进行编码%25
&分隔不同的变量值对%26
+在变量值中表示空格%2B
/表示目录路径%2F
\表示目录路径%5C
=用来连接键和值%3D
?表示查询字符串的开始%3F
空格空格%20
.句号%2E
:冒号%3A

 

javascript中可用的编码解码函数,有如下的组合:

escape(string); 
unescape(string);
encodeURI(string); 
decodeURI(string);
encodeURIComponent(string); 
decodeURIComponent(string);

他们之间的区别为:

escape/unescape: 
以16进制编码字符串,对空格、符号等字符用%xx编码表示,对中文等字符用%uxxxx编码表示。自javascript1.5之后,此方法已经不被推荐使用。

encodeURI/decodeURI: 
以UTF-8编码编码字符串,对这些字符:“ ; , / ? : @ & = + $ ”不做编码。

encodeURIComponent/decodeURIComponent: 
以UTF-8编码编码所有字符串。

因为escape/unescape已经deprecated。就不说它了,encodeURI和encodeURIComponent之前的区别用实例说明:

比如说要使用get方式将一个参数u,传递给服务器:

var  u="index.php?blogId=1&op=Default"; 
var  getURL="http://www.simplelife.cn/test.php?p="+encodeURI(u);

这里,如果使用了encodeURI,那么最终的getURL的值为: 
http://www.simplelife.cn/test.php?p=index.php?blogId=1&op=Default

这样,对参数u中的字符"&op=Default",将不会作为字符串参数传递到服务器端,而是当作test.php的参数传递过去了,因为对"&op=Default"中的字符"&"没有做编码。 
所以,在这种应用场景下,就需要使用encodeURIComponent,编码后的getURL值为: 
http://www.simplelife.cn/test.php?p=index.php%3FblogId%3D1%26op%3DDefault

这样,参数就可以顺利传递过去了。在服务器端得到的字符串将是正确的u。 

反之,如果需要通过get方式访问某一URL,但是URL中包含中文等字符,为了防止乱码等编码问题,需要将URL通过encodeURI进行编码。
 
备注说明:
关于escape不能编码英文下的小括号的问题(因为英文小括号使用概率偏高)可以这样来写:
encodeURI(string.replace(/\(/g,"(").replace(/\)/g,")"))

转载于:https://www.cnblogs.com/web001/p/9920559.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值