【js】JSUnicode编码和解码(6种⽅法)
Script 编码和解码⽅法⽅法说明
⽅法说明
escape()使⽤转义序列替换某些字符来对字符串进⾏编码
unescape() 对使⽤ escape() 编码的字符串进⾏解码
encodeURI()通过转义某些字符对 URI 进⾏编码
decodeURI()对使⽤ encodeURI() ⽅法编码的字符串进⾏解码
encodeURIComponent()通过某些转义字符对 URI 的组件进⾏编码
deencodeURIComponent()对使⽤ encodeURIComponent() ⽅法编码的字符串进⾏
解码
escape()和unescape()⽅法
escape() ⽅法能够把 ASCII 之外的所有字符转换为 %xx 或 %uxxxx(x表⽰⼗六进制的数字)的转义序列。从 \u000 到 \u00ff 的 Unicode 字符由转义序列 %xx 替代,其他所有 Unicode 字符由 %uxxxx 序列替代。
在线url网址编码解码
⽰例1
var s = "JavaScript 中国";
s = escape(s);
console.log(s); //返回字符串“JavaScript%u4E2D%u56FD”
可以使⽤该⽅法对 Cookie 字符串进⾏编码,以避免与其他约定字符发⽣冲突,因为 Cookie 包含的标点符号是有限制的。
与 escape() ⽅法对应,unescape() ⽅法能够对 escape() 编码的字符串进⾏解码。
⽰例2
下⾯代码使⽤ unescape() ⽅法解码被 escape() ⽅法解码的字符串。
var s = "JavaScript 中国";
s = escape(s); //Unicode编码
console.log(s); //返回字符串“JavaScript%u4E2D%u56FD”
s = unescape(s); //Unicode解码
console.log(s); //返回字符串“JavaScript 中国”
⽰例3
这种被解码的代码是不能够直接运⾏的,同学们可以使⽤ eval() ⽅法来执⾏它。
var s = escape('console/log("JavaScript 中国");'); //编码脚本
var s = unescape(s); //解码脚本
eval(s); //执⾏被解码的脚本
encodeURI() 和 decodeURI() ⽅法
ECMAScript v3.0 版本推荐使⽤ encodeURI() 和 encodeURIComponent() ⽅法代替 escape() ⽅法,使
⽤ decodeURI() 和 decodeURIComponent() ⽅法代替 unescape() ⽅法。
⽰例4
encodeURI() ⽅法能够把 URI 字符串进⾏转移处理。
var s = "JavaScript 中国";
s = encodeURI(s);
console.log(s); //返回字符串“JavaScript%E4%B8%AD%E5%9B%BD”
encodeURI() ⽅法与 escape() ⽅法的编码结果是不同的,但是它们都不会编码 ASCII 字符。
相对⽽⾔,encodeURI() ⽅法更佳安全。它能够将字符转换为 UTF-8 编码字符,然后⽤⼗六进制的转义序列(形式为%xx)对⽣成的 1 字节、2 字节或 4 字节的字符进⾏编码。
使⽤ decodeURI() ⽅法可以对 encodeURI() ⽅法的结果进⾏解码。
5
下⾯代码演⽰了如何对 URL 字符串进⾏编码和解码操作。
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 中国”
encodeURICompoent() 和 decodeURICompoent()
encodeURICompoent() 与 encodeURI() ⽅法不同。它们的主要区别在于,encodeURICompoent() ⽅法假定参数是 URI 的⼀部分,例如,协议、主机名、路径或查询字符串。因此,它将转义⽤于分隔 URI 各个部分的标点符号。⽽ encodeURI() ⽅法仅把它们视为普通的
ASCII 字符,并没有转换。
⽰例6
下⾯代码是 URL 字符串被 encodeURICompoent() ⽅法编码前后的⽐较。
var s = "c.biancheng/navi/search.asp?keyword=URI";
a = encodeURI(s);
console.log(a);
b = encodeURICompoent(s);
console.log(b);
输出显⽰为:
c.biancheng/navi/search.asp?keyword=URI
c.biancheng%2Fnavi%2Fsearch.asp%3Fkeyword%3DURI
第⼀⾏字符串是 encodeURI() ⽅法编码的结果,第⼆⾏字符串是 encodeURICompoent() ⽅法编码的结果。与 encodeURI() ⽅法⼀
样,encodeURICompoent() ⽅法对于 ASCII 字符不编码,⽤于分隔 URI 各种组件的标点符号,都由⼀个或多个⼗六进制的转义序列替换。
使⽤ decodeURICompoent() ⽅法可以对 encodeURICompoent() ⽅法编码的结果进⾏解码。
var s = "c.biancheng/navi/search.asp?keyword=URI";
b = encodeURICompoent(s);
b = decodeURICompoent(b);
console.log(b);
相关资料:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。