JS全局对象 : 编码和解码

本文深入探讨了JavaScript中用于处理URI的编码和解码函数,包括encodeURI(), decodeURI(), encodeURIComponent()和decodeURIComponent()。解释了它们之间的区别,以及如何在有效URI中使用UTF-8编码来替换特殊字符,确保浏览器的正确解析。

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

编码和解码
JS全局对象中编码和解码的函数:encodeURI() decodeURI() encodeURIComponent() decodeURIComponent()
URI:Uniform Resource Identifier 统一资源标识符
复制代码
有效的URI中不包含空格%等特殊符号,所以需要URI编码方法UTF-8编码替换这些字符,让浏览器接受和理解。
区别:
encodeURI()不会对本身属于URI的特殊字符进行编码,例如: / : ? #``@ & = + $ , ;
encodeURIComponent()会对它发现的任何非标准字符(非字母数字字符)进行编码
encodeURI()对应的解码函数是decodeURI()
encodeURIComponent()对应的解码函数是decodeURIComponent()
<script type="text/javascript">
var test = "http://www.w3school.com.cn/My first/"
# encodeURI()编码
var encodeText = encodeURI(test)
var decodeText = decodeURI(encodeText)
##encodeText => http://www.w3school.com.cn/My%20first/
##decodeText => http://www.w3school.com.cn/My first/

# encodeURIComponent()编码
var enComText = encodeURIComponent(test)
var deComText = decodeURIComponent(enComText)
## enComText => http%3A%2F%2Fwww.w3school.com.cn%2FMy%20first%2F
## deComText => http://www.w3school.com.cn/My first/

# 测试
var deText = decodeURI(enComText)
var decodeComText = decodeURIComponent(encodeText)
## deText => http%3A%2F%2Fwww.w3school.com.cn%2FMy first%2F
## decodeComText => http://www.w3school.com.cn/My first/
</script>
复制代码
encodeURIComponent()相比encodeURI()编码得更加彻底
大多使用encodeURIComponent()编码,用 decodeURIComponent()解码
汉字字符串的编码和解码
encodeURI('狗子') => "%E7%8B%97%E5%AD%90"
decodeURI('%E7%8B%97%E5%AD%90') => "狗子"
encodeURIComponent('狗子') => "%E7%8B%97%E5%AD%90"
decodeURIComponent('%E7%8B%97%E5%AD%90') => "狗子"
复制代码
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值