博客
关于我
Unicode编码和Base64编码
阅读量:358 次
发布时间:2019-03-04

本文共 2805 字,大约阅读时间需要 9 分钟。

Unicode

 定义了 6 个全局方法用于 Unicode 字符串的编码和解码,说明如表所示。

 
方法 说明
escape() 使用转义序列替换某些字符来对字符串进行编码
unescape() 对使用 escape() 编码的字符串进行解码
encodeURI() 通过转义某些字符对 URI 进行编码
decodeURI() 对使用 encodeURI() 方法编码的字符串进行解码
encodeURIComponent() 通过某些转义字符对 URI 的组件进行编码
deencodeURIComponent() 对使用 encodeURIComponent() 方法编码的字符串进行解码

escape()和unescape()方法

escape() 方法能够把 ASCII 之外的所有字符转换为 %xx 或 %uxxxx(x表示十六进制的数字)的转义序列。从 \u000 到 \u00ff 的 Unicode 字符由转义序列 %xx 替代,其他所有 Unicode 字符由 %uxxxx 序列替代。

示例1

var s = "JavaScript 中国";s = escape(s);console.log(s); //返回字符串“JavaScript%20%u4E2D%u56FD”

可以使用该方法对 Cookie 字符串进行编码,以避免与其他约定字符发生冲突,因为 Cookie 包含的标点符号是有限制的。

与 escape() 方法对应,unescape() 方法能够对 escape() 编码的字符串进行解码

示例2

下面代码使用 unescape() 方法解码被 escape() 方法解码的字符串。

 

var  = "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 中国");');  //编码脚本console.log(s); //console.log%28%22JavaScript%20%u4E2D%u56FD%22%29%3Bvar s = unescape(s);  //解码脚本console.log(s); //console.log("JavaScript 中国");eval(s);  //执行被解码的脚本   JavaScript 中国

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.net.navi.search.asp?keyword=URI";a = encodeURI(s);console.log(a);b = encodeURICompoent(s);console.log(b);

输出显示为:

c.biancheng.net/navi/search.asp?keyword=URI
c.biancheng.net%2Fnavi%2Fsearch.asp%3Fkeyword%3DURI

第一行字符串是 encodeURI() 方法编码的结果,第二行字符串是 encodeURICompoent() 方法编码的结果。与 encodeURI() 方法一样,encodeURICompoent() 方法对于 ASCII 字符不编码,用于 分隔 URI 各种组件的标点符号,都由一个或多个十六进制的转义序列替换。

使用 decodeURICompoent() 方法可以对 encodeURICompoent() 方法编码的结果进行解码。 

var s = "c.biancheng.net/navi/search.asp?keyword=URI";b = encodeURICompoent(s);b = decodeURICompoent(b);console.log(b);

Base64

Base64 是一种编码方式,可以将任意字符(包括二进制字符流)转成可打印字符。 定义了两个与 Base64 相关的全局方法。

  • btoa():字符串或二进制值转为 Base64 编码。
  • atob():把 Base64 编码转为原来的字符。

转载地址:http://hbyg.baihongyu.com/

你可能感兴趣的文章
【企业】韬盛和夫六精进
查看>>
【Tool】如何使用 Uniflash 烧写 WIFI 芯片 CC3200
查看>>
html2canvas vue页面截图生成图片地址
查看>>
copy_{to, from}_user()的思考
查看>>
Web前端安全策略之CSRF的攻击与防御
查看>>
5分钟快速了解下CSS4 color-adjust属性
查看>>
纯客户端页面关键字搜索高亮jQuery插件
查看>>
秋月何时了,CSS3 border-radius知多少?
查看>>
linux运维中常用的命令
查看>>
M1芯片的macbook安装王者荣耀,原神,崩坏方法
查看>>
CentOS7更改成阿里云的源
查看>>
Java温故而知新-反射机制
查看>>
Netty3事件处理顺序问题
查看>>
eclipse引用sun.misc开头的类
查看>>
firefox中angular2嵌套发送请求问题
查看>>
Netty 知识整理 (2)HttpServerCodec和HttpObjectAggregator用法
查看>>
【Linux】service命令
查看>>
【mysql】事务隔离与mvcc的误区
查看>>
【mybatis3】调试/断点打印日志
查看>>
【linux】pid file解读
查看>>