如何进行 Url 编解码
Posted on Wed, 25 Dec 2024 16:15:17 +0800 by LiangMingJian
需求
在网页异步请求时,完成对中文的 URL 编码,解码。
使用 escape 实现
escape()
函数可对字符串进行编码,以便在所有的计算机上传输,读取字符串数据。该方法不会对 ASCII 字母和数字进行编码,也不会对 * @ - _ + . /
这些 ASCII 标点符号进行编码 。
可以使用 unescape()
函数对字符串进行解码。
PS:escape()
函数已经从 Web 标准中删除,请尽量不使用该函数。
console.log(escape("春节+国庆"))
// %u6625%u8282+%u56FD%u5E86
console.log(escape("春节=+=国庆"))
// %u6625%u8282%3D+%3D%u56FD%u5E86
console.log(unescape('%u6625%u8282%3D+%3D%u56FD%u5E86'))
// 春节=+=国庆
使用 encodeURI 实现
encodeURI()
函数可把字符串作为 URI 进行编码。对如 , / ? : @ & = + $ #
的 ASCII 标点符号,encodeURI()
函数不会进行转义。
可以使用 decodeURI()
方法进行解码。
console.log(encodeURI('http://baidu.com?hello=您好&word=文档'))
// http://baidu.com?hello=%E6%82%A8%E5%A5%BD&word=%E6%96%87%E6%A1%A3
console.log(decodeURI('http://baidu.com?hello=%E6%82%A8%E5%A5%BD&word=%E6%96%87%E6%A1%A3'))
// http://baidu.com?hello=您好&word=文档
使用 encodeURIComponent 实现
encodeURIComponent()
能编码如 ; / ? : @ & = + $ , #
这些特殊字符。
可以使用 decodeURIComponent()
进行解码。
console.log(encodeURIComponent('http://baidu.com?hello=您好&word=文档'))
// http%3A%2F%2Fbaidu.com%3Fhello%3D%E6%82%A8%E5%A5%BD%26word%3D%E6%96%87%E6%A1%A3
console.log(decodeURIComponent('http%3A%2F%2Fbaidu.com%3Fhello%3D%E6%82%A8%E5%A5%BD%26word%3D%E6%96%87%E6%A1%A3'))
// http://baidu.com?hello=您好&word=文档