window.atob()与window.btoa()方法实现编码与解码

摘要:
窗户。atob()和窗口。btoa()WindowBase64.atob()函数用于解码base-64编码的数据。您可以使用window Btoa()方法对传输过程中可能出现问题的数据进行编码,并在收到数据后使用该窗口。atob()方法对数据进行解码。窗Btoa():将ascii字符串或二进制数据转换为base64编码的字符串。此方法不能直接作用于Unicode字符串。语法:vardecodedData=window。atob;示例:varencodedData=window。btoa//编码vardecodedData=窗口。atob//解码的兼容性是主流浏览器IE10及以上版本。

window.atob() 与window.btoa()

WindowBase64.atob() 函数用来解码一个已经被base-64编码过的数据。你可以使用 window.btoa() 方法来编码一个可能在传输过程中出现问题的数据,并且在接受数据之后,使用 window.atob() 方法来将数据解码。例如:你可以把ASCII里面数值0到31的控制字符进行编码,传输和解码。

window.btoa():将ascii字符串或二进制数据转换成一个base64编码过的字符串,该方法不能直接作用于Unicode字符串.

语法:

var decodedData = window.atob(encodedData);

例子:

var encodedData = window.btoa("Hello, world"); // 编码
var decodedData = window.atob(encodedData); // 解码

其兼容性是主流浏览器,IE10及以上。

Unicode 字符串

在各浏览器中,使用 window.btoa 对Unicode字符串进行编码都会触发一个字符越界的异常.

先把Unicode字符串转换为UTF-8编码,可以解决这个问题, 代码来自Johan Sundstr?m:

function utf8_to_b64( str ) {
    return window.btoa(unescape(encodeURIComponent( str )));
}

function b64_to_utf8( str ) {
    return decodeURIComponent(escape(window.atob( str )));
}

// Usage:
utf8_to_b64('? à la mode'); // "4pyTIMOgIGxhIG1vZGU="
b64_to_utf8('4pyTIMOgIGxhIG1vZGU='); // "? à la mode"
//译者注:在js引擎内部,encodeURIComponent(str)相当于escape(unicodeToUTF8(str))
//所以可以推导出unicodeToUTF8(str)等同于unescape(encodeURIComponent(str))

decodeURIComponent() 与encodeURIComponent()

这里用到了encodeURIComponent()与decodeURIComponent()方法,下面简单介绍下:

decodeURIComponent() 函数可对 encodeURIComponent() 函数编码的 URI 进行解码。

下面给个例子:

<script type="text/javascript">

var test1="http://www.w3school.com.cn/My first/"

document.write(encodeURIComponent(test1)+ "<br />")
document.write(decodeURIComponent(test1))

</script>

输出的结果:

http%3A%2F%2Fwww.w3school.com.cn%2FMy%20first%2F
http://www.w3school.com.cn/My first/

下个例子, encodeURIComponent() 对 URI 进行编码:

<script type="text/javascript">

document.write(encodeURIComponent("http://www.w3school.com.cn"))
document.write("<br />")
document.write(encodeURIComponent("http://www.w3school.com.cn/p 1/"))
document.write("<br />")
document.write(encodeURIComponent(",/?:@&=+$#"))

</script>

输出结果:

http%3A%2F%2Fwww.w3school.com.cn
http%3A%2F%2Fwww.w3school.com.cn%2Fp%201%2F
%2C%2F%3F%3A%40%26%3D%2B%24%23

关于encodeURIComponent()与decodeURIComponent()的参考地址:

JavaScript decodeURIComponent() 函数JavaScript encodeURIComponent() 函数

 escape() 与unescape() 方法

escape() 函数可对字符串进行编码,这样就可以在所有的计算机上读取该字符串。

语法:escape(string)

返回值:已编码的 string 的副本。其中某些字符被替换成了十六进制的转义序列。

说明:该方法不会对 ASCII 字母和数字进行编码,也不会对下面这些 ASCII 标点符号进行编码: * @ - _ + . / 。其他所有的字符都会被转义序列替换。

 参考地址:https://developer.mozilla.org/zh-CN/docs/Web/API/WindowBase64/btoa

https://developer.mozilla.org/zh-CN/docs/Web/API/WindowBase64/atob

http://www.w3school.com.cn/jsref/jsref_escape.asp

免责声明:文章转载自《window.atob()与window.btoa()方法实现编码与解码》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇maven 实现activity工作流的简单例子(以报销为例 附代码)win8、win10系统添加组策略的方法下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

字符编码简单总结

字符编码(英语:Character encoding)、字集码是把字符集中的字符编码为指定集合中某一对象(例如:比特模式、自然数串行、8位组或者电脉冲),以便文本在计算机中存储和通过通信网络的传递。常见的例子包括将拉丁字母表编码成摩斯电码和ASCII。其中,ASCII将字母、数字和其它符号编号,并用7比特的二进制来表示这个整数。通常会额外使用一个扩充的比特...

java字符编码(转)

转载:http://blog.csdn.net/peach99999/article/details/7231247  深入讨论java乱码问题   几种常见的编码格式 为什么要编码 不知道大家有没有想过一个问题,那就是为什么要编码?我们能不能不编码?要回答这个问题必须要回到计算机是如何表示我们人类能够理解的符号的,这些符号也就是我们人类使用的语言。由...

VIM常见用法总结

欢迎和大家交流技术相关问题:邮箱: jiangxinnju@163.com博客园地址: http://www.cnblogs.com/jiangxinnjuGitHub地址: https://github.com/jiangxincode知乎地址: https://www.zhihu.com/people/jiangxinnju vim中光标如何回到上一次...

001python基础

1、Python源码的头文件中要声明编码方式 例如:按照UTF-8编码读取源代码 #coding=utf-8#coding:utf-8#-*- coding:utf-8 -*- 2、命令行与python交互模式 2.1 在windows开始菜单选择“命令提示符”,就进入到命令行模式2.2 在命令行模式下敲命令python,然后就进入到python交互模式2...

Microsoft SQL Server 2000 的国际化功能(1)

简介 Microsoft? SQL Server? 2000 包括各种支持国际化操作和环境的强大功能。扩展的多种语言功能使 SQL Server 2000 成为一种引人注目的数据库产品和应用程序平台。本文将完整地概述在全球范围内使用这些功能的方法。 除了列出一系列功能外,本文还将解释国际化/多种语言要求会怎样影响项目的各个方面。 什么是...

sqlplus显示乱码解决方法

sqlplus显示乱码与三个方面有关 1.数据库的字符编码 --查看数据库的编码 SELECT * FROM NLS_DATABASE_PARAMETERS;     本例中,可以看到数据库中字符串(char,varchar2,clob,long)使用的是AL32UTF8编码存储,即UTF8存储。数据库中的NCHAR,NVARCHAR等使用的是AL16UT...