在遇到地址栏中带有中文的参数的时候,我们在取到这个中文时有时会出现一堆乱码,这不是我们希望的,我们希望取到的是这个不乱码的中文,也就是经过了解码的中文汉字.。
这里要说一下解码是有两种方式:decodeURI ( ) 和 decodeURIComponent ( ).
与之相对应有两种编码的方式:encodeURI ( ) 和 encodeURIComponent ( )
encodeURI 和 decodeURI 函数操作的是完整的 URI;它们假定 URI 中的任何保留字符都有特殊意义,所有不会编码它们,从下面的demo中也可以看出只编码(解码)了后半部分;
encodeURIComponent 和 decodeURIComponent 函数操作的是组成 URI 的个别组件;它们假定任何保留字符都代表普通文本,所以必须编码它们,从下面的demo中也可以看出url的整体进行了编码(解码)。
这是一个小demo
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
</body>
<script type="text/javascript">
var exurl = "https://mp.csdn.net/汉字?ex&中文";
// 对exurl进行编码(转义)
var zm_1 = encodeURI(exurl);
var zm_2 = encodeURIComponent(exurl);
console.log("编码如下")
console.log(zm_1);
console.log(zm_2);
// 对编码之后的exurl进行解码(反转义)
var jm_1 = decodeURI(zm_1);
var jm_2 = decodeURIComponent(zm_2);
console.log("对应的解码如下");
console.log(jm_1);
console.log(jm_2);
</script>
</html>
运行之后的结果如下: