encodeURI、decodeURI、encodeURIComponent与decodeURIComponent的区别

encodeURI

会对非ACSII字母、数字以及- _ . ! ~ * ' ( )符号和URI


分隔符;/?:@&=+$,#之外的所有字符进行十六进制的转义序列进行替换


如:encodeURI(“http://www.baidu.com/pa th/我的”)返回


"http://www.baidu.com/pa%20th/%E6%88%91%E7%9A%84"


encodeURIComponent

encodeURIComponent与encodeURI的作用几乎相同而区别是



encodeURIComponent会对URI分隔符;/?@$=+#等进行转义


encodeURI(“http://www.baidu.com/pa th/我的”)


返回"http%3A%2F%2Fwww.baidu.com%2Fpa%20th%2F%E6%88%91%E7%9A%84"

decodeURI、decodeURIComponent

很明显decodeURI和decodeURIComponent就是encodeURI和encodeURIComponent的反向解码方法


encodeURI()主要用于前端与后端衔接处类似cookie、AJAX等多数情况都是避免URL的中文路径在后端形成乱码而进行编码。与encodeURI类似的还有escape()方法但在新的ES标准中已经不建议使用escape()方法了建议使用encodeURI和encodeURIComponent代替


在Java中,`encodeURI()`、`encodeURIComponent()`、`decodeURI()` 和 `decodeURIComponent()` 都是用于处理URL编码和解码的内置函数,它们主要用于字符串转换,以便在HTTP请求头、URL路径、查询参数等需要统一格式的地方。 1. `encodeURI()` 函数:这个方法会将输入的URI(Uniform Resource Identifier)字符串按照规范进行编码,包括空格和其他非ASCII字符,适用于整个URI的编码,不会对已经编码的部分再次编码。例如: ```java String encoded = URLEncoder.encode("Hello World!", "UTF-8"); ``` 2. `encodeURIComponent()` 函数(注意这是JavaScript中的函数,不是Java标准库的一部分):它更专注于URL查询参数部分的编码,对于特殊字符如"!"、"*"、"&"等采用百分号%加上对应的十六进制数的方式编码。如果需要在Java中实现类似功能,可以使用`URLEncoder`结合`String`的`replace()`方法: ```java String encodedQuery = "Hello%20World!".replaceAll("[^a-zA-Z0-9\\-._~:/?#]", "%$0".charAt(0)); ``` 3. `decodeURI()` 函数:接收编码后的URI字符串并将其还原成原始形式。比如: ```java String decoded = URLDecoder.decode(encoded, "UTF-8"); ``` 4. `decodeURIComponent()` 函数:同样地,它用于解码URIComponent编码的数据。例子: ```java String decodedParam = URLDecoder.decode(encodedQuery, "UTF-8"); ``` 在实际应用中,如果你在构建URL、发送网络请求或者处理用户输入时遇到编码和解码的需求,就需要用到这些方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值