转载于https://www.cnblogs.com/moqiutao/p/6280099.html

文章目录

  • window.atob() 与window.btoa()
  • Unicode 字符串
  • decodeURIComponent() 与encodeURIComponent()
  • escape() 与unescape() 方法

一.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()方法实现编码与解码相关推荐

  1. Linux上的js解码,使用JavaScript实现Base64编码与解码

    我们知道,浏览器的window对象提供有window.atob()和window.btoa()方法可以对字符串进行Base64编码和解码. console.log(window.btoa(window ...

  2. Java编码与解码 - Charset

    在计算机中所有的文件.媒体.信息在底层都是以二进制方式进行存储的. 要想将计算机底层存储的二进制信息转换成可以直接使用的文件.媒体和信息,就要进行转换,在这个过程中涉及两个概念:编码(Encode)和 ...

  3. java对URL进行编码和解码

    代码 引入 import java.net.URLEncoder; import java.net.URLDecoder; 编码 URLEncoder.encode( URL, "UTF-8 ...

  4. 前端html的base64使用方法window.btoa()和window.atob()

    前端用base64加密和解密的使用方法,只需要两个函数就可以了.一个是加密:window.btoa(),一个是解密:window.atob(),看例子: <html><head> ...

  5. Window atob()与btoa()方法

    一.Window atob()与btoa()方法 1.1 atob() atob() 方法用于解码使用 base-64 编码的字符串. 语法 window.atob(encodedStr) encod ...

  6. Js对字符串进行base64编码和解码,中文报错:Failed to execute ‘btoa‘ on ‘Window‘: The string to be encoded contains cha

    我最早使用的是atob和btoa这两个函数,但是会出现报错. 直接使用封装好的方法: /*** 编码base64*/ function Encode64(str) {return btoa(encod ...

  7. base64和普通字符串互转---window.btoa window.atob;图片的base64格式

    目录 一.作用 二.使用方法 一.作用 将非ASCLL码数据转换为ASCLL码数据,便于网络传输(某些系统仅支持ASCLL编码): 二.使用方法 1)测试代码: //window.btoa(" ...

  8. js基础 -- window.btoa和window.atob使用详解.md

    欢迎访问我的个人博客:http://www.xiaolongwu.cn 定义 atob() 解码一个Base64字符串. btoa() 从一个字符串或者二进制数据编码一个Base64字符串. 用法 只 ...

  9. Window atob() 方法

    atob() 方法用于解码使用 base-64 编码的字符串. 语法: window.atob(encodedStr) 参考:https://www.runoob.com/jsref/met-win- ...

最新文章

  1. 使用按钮控制HTML5背景音乐开关
  2. sharepoint2013- Office web app server2013详细的安装和部署
  3. python处理流程-python流程处理
  4. st04 查看数据库日志
  5. 解读GAN及其 2016 年度进展
  6. Linux学习之Vim编辑器
  7. Python统计列表中的重复项出现的次数的方法
  8. java安全级别过高_Java应该是更高级别还是更低级别?
  9. H.264视频编码在VC .Net中的实现(H264全文)
  10. 2021-2025年中国点状插头装置行业市场供需与战略研究报告
  11. mysql 执行计划不对_MySQL执行计划显示与执行过程不符合
  12. 学C++的室友手握这个项目,面试稳了
  13. Halcon图像预处理与形态学(图像的几何变换)
  14. 远程计算机怎么安装软件安装,不需要U盘,手机电脑给电视远程安装软件的两种方法...
  15. word2007导出pdf带书签
  16. jQuery动画高级用法(上)——详解animation中的.queue()函数 http://www.cnblogs.com/hh54188/archive/2011/04/09/1996469.
  17. 106短信通道等6种常见短信通道介绍,你了解多少呢
  18. 如何快速融入一个研发团队?
  19. c语言判定条件 i什么意思,c语言 if(!x)中条件!x是什么意思
  20. BZOJ4200 洛谷2304 UOJ132:[NOI2015]小园丁与老司机——题解

热门文章

  1. 基础练习 数列排序 c语言
  2. Ubuntu系统的安装与使用:[3]搜狗输入法安装
  3. .net学习榜样的博客
  4. 机器学习的理论知识点总结
  5. 数据湖之iceberg系列(五)-Spark实时处理数据
  6. Spring Boot 常见面试题
  7. 推荐系统中使用ctr排序的f(x)的设计-传统模型篇
  8. JSON 序列化与反序列化:使用TypeReference 构建类型安全的异构容器
  9. 浅谈JavaScript继承
  10. 内存监控及报警shell脚本