补充:url编码和解码以及url编码的使用场景

 // 加密和解密 与 编码和解码 不是一回事

        // 加密和解密是要把数据通过算法, 变成一套不可读的东西 (有的方式 可以解密)

        // 编码: 计算机保存/传输一切都是以0和1位基本的, 给我们展示的时候, 就得转换编程成另一种形式

        // url编码: 把url地址中的非英文字符转成另外一种编码形式, 确保后台准确解析我通过url的参数

        // %e4%bb%8a%e6%99%9a%e5%b0%8f%e6%a0%91%e6%9e%97%e8%a7%81 (今晚小树林见的url编码展示形式, 相当于把文字的0和1数据以这种编码形式展现)

        // utf-8编码: 0和1展示成你认识的中文汉字

        // 1. 快速编码和解码

        console.log(encodeURI("水浒传&")); // %E6%B0%B4%E6%B5%92%E4%BC%A0&

        console.log(decodeURI("%E6%B0%B4%E6%B5%92%E4%BC%A0&")); // 水浒传&

        // 2. 完全编码和解码

        console.log(encodeURIComponent("水浒传&")); // %E6%B0%B4%E6%B5%92%E4%BC%A0%26

        console.log(decodeURIComponent("%E6%B0%B4%E6%B5%92%E4%BC%A0%26")); // 水浒传&

        // 可以对 ;/?:@&=+$,# 进行编码

        // 两个函数都不会对  - _ . ! ~ * ' ( )进行编码

        // 编码 - 把0和1的数据 - 以何种形式展现

url编码的使用场景:

  // 原因: 发送参数a=6&10, 浏览器会把&识别成一个分各符, 下一对key和value会认为是key是10

        let ajaxObj = new XMLHttpRequest();

        ajaxObj.onreadystatechange = function(){

            if (ajaxObj.readyState == 4) {

                if (ajaxObj.status == 200) {

                    console.log(ajaxObj.responseText);

                }

            }

        }

        // 解决: 多个参数要在?后面 以参数名=值&参数名=值, 要进行url编码

        var urlStr = encodeURIComponent("6&10"); // 6%2610


        ajaxObj.open("GET", "http://123.57.109.30:3006/api/get?a=" + urlStr);

        ajaxObj.send();

        // 总结: url编码使用场景:

        // 在有特殊字符的时候(中文, &等等), 需要url编码, 防止浏览器误解

        // 中文-浏览器会自动进行url编码

你可能感兴趣的:(补充:url编码和解码以及url编码的使用场景)