javascript 使用btoa和atob来进行Base64转码和解码
javascript原生的api本来就支持,Base64,但是由于之前的javascript局限性,导致Base64基本中看不中用。当前html5标准正式化之际,Base64将有较大的转型空间,对于Html5 Api中出现的如FileReader Api, 拖拽上传,甚至是Canvas,Video截图都可以实现。
好了,前言说了一大堆,开发者需要重视:
一.我们来看看,在javascript中如何使用Base64转码
var str = 'javascript'; window.btoa(str)
//转码结果 "amF2YXNjcmlwdA==" window.atob("amF2YXNjcmlwdA==")
//解码结果 "javascript"
二.对于转码来说,Base64转码的对象只能是字符串,因此来说,对于其他数据还有这一定的局限性,在此特别需要注意的是对Unicode转码。
var str = "China,中国"
window.btoa(str)
Uncaught DOMException: Failed to execute 'btoa' on 'Window': The string to be encoded contains characters outside of the Latin1 range.
很明显,这种方式是不行的,那么如何让他支持汉字呢,这就要使用window.encodeURIComponent和window.decodeURIComponent
var str = "China,中国"; window.btoa(window.encodeURIComponent(str))
//"Q2hpbmElRUYlQkMlOEMlRTQlQjglQUQlRTUlOUIlQkQ=" window.decodeURIComponent(window.atob('Q2hpbmElRUYlQkMlOEMlRTQlQjglQUQlRTUlOUIlQkQ='))
//"China,中国"
window.btoa('{"success":true,"msg":null,"errorCode":0,"data":{"memberId":"6976462","canBxMoney":0,"bxdAsset":3000.00,"bxdProfit":95.752732}}');
"eyJzdWNjZXNzIjp0cnVlLCJtc2ciOm51bGwsImVycm9yQ29kZSI6MCwiZGF0YSI6eyJtZW1iZXJJZCI6IjY5NzY0NjIiLCJjYW5CeE1vbmV5IjowLCJieGRBc3NldCI6MzAwMC4wMCwiYnhkUHJvZml0Ijo5NS43NTI3MzJ9fQ=="
window.atob("eyJzdWNjZXNzIjp0cnVlLCJtc2ciOm51bGwsImVycm9yQ29kZSI6MCwiZGF0YSI6eyJtZW1iZXJJZCI6IjY5NzY0NjIiLCJjYW5CeE1vbmV5IjowLCJieGRBc3NldCI6MzAwMC4wMCwiYnhkUHJvZml0Ijo5NS43NTI3MzJ9fQ==")
"{"success":true,"msg":null,"errorCode":0,"data":{"memberId":"6976462","canBxMoney":0,"bxdAsset":3000.00,"bxdProfit":95.752732}}"
javascript 使用btoa和atob来进行Base64转码和解码的更多相关文章
- 使用btoa和atob来进行Base64转码和解码
btoa: 将普通字符串转为Base64字符串 atob: 将Base64字符串转为普通字符串 说明:window.btoa不支持汉字: ===>使用window.encodeURI ...
- 对图片进行Base64转码和解码
Base64代码 base64.c #include <stdlib.h> #include <stdio.h> #include <string.h> #incl ...
- base64转码,解码方法
function Base64() { // private property _keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqr ...
- Base64转码和解码的帮助类
/** * 将字符串进行Base64编码 * * @param s 被编码的字符串 * @return 编码后的字符串 */ public static String encoderBASE64(St ...
- javascript Base64转码解码
javascript 使用btoa和atob来进行Base64转码和解码 $scope.checkAddCookie = function() { var expireDate = new Date( ...
- java script btoa与atob的
javascript原生的api本来就支持,Base64,但是由于之前的javascript局限性,导致Base64基本中看不中用.当前html5标准正式化之际,Base64将有较大的转型空间,对于H ...
- Javascript 将图片的绝对路径转换为base64编码
Javascript将图片的绝对路径转换为base64编码 我们可以使用canvas.toDataURL的方法将图片的绝对路径转换为base64编码:在这我们引用的是淘宝首页一张图片如下: var i ...
- javascript中的Base64.UTF8编码与解码详解
javascript中的Base64.UTF8编码与解码详解 本文给大家介绍的是javascript中的Base64.UTF8编码与解码的函数源码分享以及使用范例,十分实用,推荐给小伙伴们,希望大家能 ...
- JavaScript对HTML字符转义与反转义(转码和解码)
HTML的Encode(转码)和解码(Decode)在平时的开发中也是经常要处理的,在这里总结了使用javascript处理HTML的Encode(转码)和解码(Decode)的常用方式 一.用浏览器 ...
随机推荐
- js问题解释
今天群里有人问一个js问题,现列出以便其他人参考. Function.prototype.curry=function(){ var slice=Array.prototype.slice, args ...
- 20135203齐岳信息安全系统设计基础——实验四&实验五实验报告
见20135217孙小博的博客:http://www.cnblogs.com/sunxiaobo/p/4991861.html
- Maven引入本地jar包
<dependency> <groupId>${gorup}</groupId> <artifactId>${artifact}</artifac ...
- Fedora10下建立linux系统的窗口没有地址栏
Fedora10下建立的linux系统窗口没有地址栏 打开一个文件夹就打开一个窗口,还没有地址栏,这很麻烦也不习惯. 另:打开地址栏可以用组合键 Ctrl+L 如图 解决: edit---perfer ...
- AngularJS拦截器
AngularJS是通过拦截器提供了一个全局层面对响应进行处理的途径.拦截器实际是$http服务的基础中间件,用来向应用的业务流程中注入新的逻辑,其核心是服务工厂,通过向 $httpProvider. ...
- c#用牛顿法计算根号下2的值
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- 【转】jQuery异步上传文件
用了 jQuery Form插件来解决这个问题:http://malsup.com/jquery/form/#code-samples 有没有不用该插件来实现呢? 解决方法: 可以采用HTML5,用j ...
- MAC机中安装ruby环境--转载
http://www.cnblogs.com/pingfan1990/p/4957162.html
- 关于VC工程的组成
刚刚建立的工程,其中 .vcxproj文件是生成的工程文件,它包含当前工程的设置和工程所包含的文件等信息..vcxproj.filters文件存放工程的虚拟目录信息,也就是在解决方案浏览器中的目录结构 ...
- js创建对象的6种方式
一.工厂模式 function createStudent(name,age){ var o=new Object(); o.name=name; o.age=age; o.myName=functi ...