一.Unicode编码和解码
1. escape()和unescape()方法
escape() 方法能够把 ASCII 之外的所有字符转换为 %xx 或 %uxxxx(x表示十六进制的数字)的转义序列。从 \u000 到 \u00ff 的 Unicode 字符由转义序列 %xx 替代,其他所有 Unicode 字符由 %uxxxx 序列替代。
var s = "JavaScript 中国";
s = escape(s); //Unicode编码
console.log(s); //返回字符串“JavaScript%u4E2D%u56FD”
s = unescape(s); //Unicode解码
console.log(s); //返回字符串“JavaScript 中国”
eval()可执行js脚本
var s = escape('console/log("JavaScript 中国");'); //编码脚本
var s = unescape(s); //解码脚本
eval(s); //执行被解码的脚本
2.encodeURI() 和 decodeURI() 方法
ECMAScript v3.0 版本推荐使用 encodeURI() 和 encodeURIComponent() 方法代替 escape() 方法,使用 decodeURI() 和 decodeURIComponent() 方法代替 unescape() 方法。
var s = "JavaScript 中国";
s = encodeURI(s); //URI编码
console.log(s); //返回字符串“JavaScript%E4%B8%AD%E5%9B%BD”
s = decodeURI(s); //URI解码
console.log(s); //返回字符串“JavaScript 中国”
3.encodeURIComponent() 和 decodeURIComponent()
encodeURIComponent() 与 encodeURI() 方法不同。它们的主要区别在于,encodeURIComponent() 方法假定参数是 URI 的一部分,例如,协议、主机名、路径或查询字符串。因此,它将转义用于分隔 URI 各个部分的标点符号。而 encodeURI() 方法仅把它们视为普通的 ASCII 字符,并没有转换。(注意:uniapp使用encodeURIComponent时,需要把对象数据转string格式,例:JSON.stringify();)
var s = "c.biancheng.net/navi/search.asp?keyword=URI";
b = encodeURIComponent(s);//biancheng.net%2Fnavi%2Fsearch.asp%3Fkeyword%3DURI
b = decodeURIComponent(b);//"c.biancheng.net/navi/search.asp?keyword=URI";
二.Base64编码和解码
Base64 是一种编码方式,可以将任意字符(包括二进制字符流)转成可打印字符。JavaScript 定义了两个与 Base64 相关的全局方法。
btoa():字符串或二进制值转为 Base64 编码。
atob():把 Base64 编码转为原来的字符。
function b64Encode (str) {
return btoa(encodeURIComponent(str));
}
function b64Decode (str) {
return decodeURIComponent(atob(str));
}
var b = b64Encode('JavaScript 从入门到精通');
var a = b64Decode(b);
console.log(b); //返回SmF2YVNjcmlwdCVFNCVCQiU4RSVFNSU4NSVBNFOSU5NyVBOCVFNSU4OCVCMCVFNyVCMiVCRSVFOSU4MCU5QQ==
console.log(a); //返回“JavaScript 从入门到精通”
来源: https://blog.csdn.net/weixin_49295874/article/details/116696629