正常的方式(非加密)
1、escape/unescape:主要对中文汉字进行编码和解码(一般只有JS语言支持)(空格会用20%代替 剑指offer替换空格那道题测试通过)
2、encodeURI/decodeURI: 基本所有编程语言都支持
3、encoudeURIComponent/decoudeURIComponent 和第二种方式相似,区别在于,当问号传参包含特殊字符时,encodeURI不能编码一些特殊字符,只能使用encodeURIComponent处理
let str = 'http://www,baidu.com?',
obj = {
name: 'javascript',
url: 'http://www.qq.com?user=111',
};
// 需求是把对象obj的每一项属性都拼接到URL的末尾
for(key in obj){
str += `${key}=${encodeURIComponent(obj[key])}&`;
// 不能使用encodeURI,他不能处理一些特殊字符
}
console.log(str.replace(/&$/g, ' '));
// 后期获取URL问号参数的时候,把获取的值再依次解码
String.prototype.myQueryUrlParameter=function myQueryUrlParameter(){
let reg=/[?&]([^?&=]+)(?:=([^?&=]*))?/g,
obj={};
this.replace(reg, (...arg)=>{
let [, key, value] = arg;
obj[key] = encodeURIComponent(value); // =>解码
});
return obj;
}
加密方法
1、可逆转加密(一般都是自己设置规则)
2、不可逆转(一般都是基于MD5加密完成,可能会把MD5加密后的结果二次加密)