js前端base64转码解码
我们为什么要用base
base64是网络上最常见的用于传输8bit字节代码的编码方式之一。有时我们需要把二进制数据编码为适合放在URL中的形式。这时采用base64编码具有不可读性,即所编码的数据不会被人直接看出。除此之外,还可以放在请求头,响应头进行传输。
最方便的转码解码window.atob() 与window.btoa()
Window.atob()
函数用来解码一个已经被base-64编码过的数据。
window.btoa():将ascii字符串或二进制数据转换成一个base64编码过的字符串
注:以上办法不适用于带中文解密,即window.btoa 与 window.atob 不支持中文
带中文的base64转码解码
首先定义一个对象
function BASE64() { // private property _keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; // public method for encoding this.encode = function (input) { var output = ""; var chr1, chr2, chr3, enc1, enc2, enc3, enc4; var i = 0; input = _utf8_encode(input); while (i < input.length) { chr1 = input.charCodeAt(i++); chr2 = input.charCodeAt(i++); chr3 = input.charCodeAt(i++); enc1 = chr1 >> 2; enc2 = ((chr1 & 3) << 4) | (chr2 >> 4); enc3 = ((chr2 & 15) << 2) | (chr3 >> 6); enc4 = chr3 & 63; if (isNaN(chr2)) { enc3 = enc4 = 64; } else if (isNaN(chr3)) { enc4 = 64; } output = output + _keyStr.charAt(enc1) + _keyStr.charAt(enc2) + _keyStr.charAt(enc3) + _keyStr.charAt(enc4); } return output; } // public method for decoding this.decode = function (input) { var output = ""; var chr1, chr2, chr3; var enc1, enc2, enc3, enc4; var i = 0; input = input.replace(/[^A-Za-z0-9\+\/\=]/g, ""); while (i < input.length) { enc1 = _keyStr.indexOf(input.charAt(i++)); enc2 = _keyStr.indexOf(input.charAt(i++)); enc3 = _keyStr.indexOf(input.charAt(i++)); enc4 = _keyStr.indexOf(input.charAt(i++)); chr1 = (enc1 << 2) | (enc2 >> 4); chr2 = ((enc2 & 15) << 4) | (enc3 >> 2); chr3 = ((enc3 & 3) << 6) | enc4; output = output + String.fromCharCode(chr1); if (enc3 != 64) { output = output + String.fromCharCode(chr2); } if (enc4 != 64) { output = output + String.fromCharCode(chr3); } } output = _utf8_decode(output); return output; } // private method for UTF-8 encoding _utf8_encode = function (string) { string = string.replace(/\r\n/g,"\n"); var utftext = ""; for (var n = 0; n < string.length; n++) { var c = string.charCodeAt(n); if (c < 128) { utftext += String.fromCharCode(c); } else if((c > 127) && (c < 2048)) { utftext += String.fromCharCode((c >> 6) | 192); utftext += String.fromCharCode((c & 63) | 128); } else { utftext += String.fromCharCode((c >> 12) | 224); utftext += String.fromCharCode(((c >> 6) & 63) | 128); utftext += String.fromCharCode((c & 63) | 128); } } return utftext; } // private method for UTF-8 decoding _utf8_decode = function (utftext) { var string = ""; var i = 0; var c = c1 = c2 = 0; while ( i < utftext.length ) { c = utftext.charCodeAt(i); if (c < 128) { string += String.fromCharCode(c); i++; } else if((c > 191) && (c < 224)) { c2 = utftext.charCodeAt(i+1); string += String.fromCharCode(((c & 31) << 6) | (c2 & 63)); i += 2; } else { c2 = utftext.charCodeAt(i+1); c3 = utftext.charCodeAt(i+2); string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63)); i += 3; } } return string; }
}
使用的时候直接调用
var str='你好';
var enstr=BASE64.encode(str);
alert(enstr);
var destr=BASE64.decode(enstr);
alert(destr);
js前端base64转码解码相关推荐
- js实现 base64 转码解码
什么是base64 Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方法. 在前端开发中常用来做加密解密.替换icon减少网 ...
- js实现base64编码和解码
文章目录 需求 什么是Base64 编码规则 如何解码 js实现基于base64的编码解码 window自带函数进行Base64编码解码 Base64编码的实际运用 图片base64编码 需求 应公司 ...
- 用 JS 进行 Base64 编码、解码
从IE10+浏览器开始,所有浏览器就原生提供了 Base64 编码.解码方法,不仅可以用于浏览器环境,Service Worker 环境也可以使用. 方法名就是 atob 和 btoa ,具体语法如下 ...
- Python Base64转码解码
Python Base64 提供了好几种方法例如: encode, decode, encodestring, decodestring, b64encode, b64decode, standard ...
- 【后端过程记录】用flask搭建服务器作后端接收数据 将base64字符串码解码为可读取文件 载入训练好的模型进行预测
因为项目的原因了解到有一个python的flask框架,查了一下: 关于前端图片上传的canvas: 如下元素 <canvas id="canvas" width=" ...
- Js实现Base64编码、解码
1.加密解密方法使用: //1.加密 var str = '124中文内容'; var base = new Base64(); var result = base.encode(str); //do ...
- js前端 base64图片下载保存
如图,我想通过点击"保存按钮",将这张base64图片保存到本地. // 保存按钮点击事件方法 function saveImg(){var sampleImage = $(&qu ...
- java解码base64的png图片_使用PHP对图片进行base64编码和解码(png、jpg,声音、视频)...
为什么要对图片base64编码 base64是网络上最常见的传输8Bit字节代码的编码方式之一.base64主要不是加密,它主要的用途是把一些二进制数转成普通字符用于网络传输.由于一些二进制字符在传输 ...
- Java、JS、OC、Flutter的Base64编码和解码
题记 -- 执剑天涯,从你的点滴积累开始,所及之处,必精益求精,即是折腾每一天. ** 你可能需要 CSDN 网易云课堂教程 掘金 EDU学院教程 知乎 Flutter系列文章 本文章将描述在 Jav ...
最新文章
- jittor拟合sin函数
- (摘要)100个伟大的商业理念:理念34:企业社会责任
- ssh mysql转发_ssh转发代理:ssh-agent用法详解
- 在什么情况下,刘强东会丧失京东的控制权?
- eclipse/myeclipse中快捷键 Ctrl+shift+down/up 出现屏幕颠倒的解决方法
- 基于JAVA+SpringBoot+Mybatis+MYSQL的疾病报销管理系统
- Leetcode每日一题:222.count-complete-tree-nodes(完全二叉树的节点个数)
- WiFi(网络)调试Android手机
- JavaScript:时间戳(timestamp)与时间(Date)转换
- 微信小程序4-小程序的api
- virtuoso配合calibre进行电路后仿真
- 微信检测器 微信过滤工具
- vue的基础总结(vue的非脚手架总结)
- NPM安装依赖包,报错node-gyp rebuild...解决方法
- 计算机评语公式怎么输,excel公式写评语
- wps 符号操作(仅符号)
- 区块链共识机制 和 经典分布式共识机制
- 如何更新服务器系统教程,服务器操作系统如何更新
- C++程序设计语言学习笔记:名字空间
- CleanMyMac X是干嘛的?及最新版功能介绍