javascript的url编码函数有2个, 分别是
- encodeURIComponent() — 编码url,
- encodeURI() — 编码uri参数, 仅识别?后面的内容
进行url编码的作用有 2 个, 一个是解决中文乱码, 一个是解决符号乱码
把整个url进行编码
<script>
console.log(encodeURIComponent("https://www.52dixiaowo.com?s=我是中文参数"))
</script>
输出结果如下, 会把整个url编码, 也就是所有内容
https%3A%2F%2Fwww.52dixiaowo.com%3Fs%3D%E6%88%91%E6%98%AF%E4%B8%AD%E6%96%87%E5%8F%82%E6%95%B0
对于uri编码, 也就是仅进行参数编码
<script>
console.log(encodeURI("https://www.52dixiaowo.com?s=我是中文参数"))
</script>
输出的结果如下, 仅参数编码, 也就是?后的内容
https://www.52dixiaowo.com?s=%E6%88%91%E6%98%AF%E4%B8%AD%E6%96%87%E5%8F%82%E6%95%B0
当你在 ajax 中进行get请求参数包含中文时, 指定的参数需完整编码, 此时就用的是 encodeURIComponent()
在某些时候仅需要编码uri, 就使用encodeURI()
值得注意的是, 仅包含中文和符号时, 必须使用encodeURIComponent, 比如”学习C++”, 如果你使用了encodeURI, 那么这个++会变成2个空格
可以看到这两个函数有各自的作用, 在结果生成方面, 两个函数编码方式一致.