JS 中对于文字的编码和解码,涉及3个函数:
1. escape()和unescape()方法
escape() 方法能够把 ASCII 之外的所有字符转换为 %xx 或 %uxxxx(x表示十六进制的数字)的转义序列。从 u000 到 u00ff 的 Unicode 字符由转义序列 %xx 替代,其他所有 Unicode 字符由 %uxxxx 序列替代。
escape ("字符串") // 编码
unescape ("字符串") // 解码
2.encodeURI() 和 decodeURI() 方法
ECMAScript v3.0 版本推荐使用 encodeURI() 和 encodeURIComponent() 方法代替 escape() 方法,使用 decodeURI() 和 decodeURIComponent() 方法代替 unescape() 方法。
encodeURI (URIstring) // 编码
decodeURI (URIstring) // 解码
3.encodeURICompoent() 和 decodeURICompoent()
encodeURICompoent() 与 encodeURI() 方法不同。它们的主要区别在于,encodeURICompoent() 方法假定参数是 URI 的一部分,例如,协议、主机名、路径或查询字符串。因此,它将转义用于分隔 URI 各个部分的标点符号。而 encodeURI() 方法仅把它们视为普通的 ASCII 字符,并没有转换。
encodeURIComponent (URIstring) // 编码
decodeURIComponent (URIstring) // 解码
总结:
总的来说,转换普通字符串(不包含 / ? = 这类的符号)时,推荐使用方法2,转换URL中的包含 / = ? 这类符号的字符串,推荐使用方法3。