创建一个base64.js文件,将以下代码粘贴进去

var Base64=
{
_keyStr:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",
encode:function(e){
var t="";
var n,r,i,s,o,u,a;
var f=0;
e=Base64._utf8_encode(e);
while(f<e.length){
n=e.charCodeAt(f++);
r=e.charCodeAt(f++);
i=e.charCodeAt(f++);
s=n>>2;
o=(n&3)<<4|r>>4;
u=(r&15)<<2|i>>6;
a=i&63;
if(isNaN(r)){
u=a=64
}else if(isNaN(i)){
a=64
}
t=t+this._keyStr.charAt(s)+this._keyStr.charAt(o)+this._keyStr.charAt(u)+this._keyStr.charAt(a)
}
return t
},
decode:function(e){
var t="";
var n,r,i;
var s,o,u,a;
var f=0;
e=e.replace(/[^A-Za-z0-9+/=]/g,"");
while(f<e.length){
s=this._keyStr.indexOf(e.charAt(f++));
o=this._keyStr.indexOf(e.charAt(f++));
u=this._keyStr.indexOf(e.charAt(f++));
a=this._keyStr.indexOf(e.charAt(f++));
n=s<<2|o>>4;
r=(o&15)<<4|u>>2;
i=(u&3)<<6|a;
t=t+String.fromCharCode(n);
if(u!=64){
t=t+String.fromCharCode(r)
}
if(a!=64){
t=t+String.fromCharCode(i)
}
}
t=Base64._utf8_decode(t);
return t
},
_utf8_encode:function(e){
e=e.replace(/rn/g,"n");
var t="";
for(var n=0;n<e.length;n++){
var r=e.charCodeAt(n);
if(r<128){
t+=String.fromCharCode(r)
}else if(r>127&&r<2048){
t+=String.fromCharCode(r>>6|192);
t+=String.fromCharCode(r&63|128)
}else{
t+=String.fromCharCode(r>>12|224);
t+=String.fromCharCode(r>>6&63|128);
t+=String.fromCharCode(r&63|128)
}
}
return t
},
_utf8_decode:function(e){
var t="";
var n=0;
var r=c1=c2=0;
while(n<e.length){
r=e.charCodeAt(n);
if(r<128){
t+=String.fromCharCode(r);
n++
}else if(r>191&&r<224){
c2=e.charCodeAt(n+1);
t+=String.fromCharCode((r&31)<<6|c2&63);
n+=2
}else{
c2=e.charCodeAt(n+1);
c3=e.charCodeAt(n+2);
t+=String.fromCharCode((r&15)<<12|(c2&63)<<6|c3&63);
n+=3
}
}
return t
}
};

//以上工具类有个bug ,就是存在 "return" 时 会变成 "retun" 少 "r"

建议用这种方式

window.btoa(unescape(encodeURIComponent()))

js中的base64转化的更多相关文章

  1. [JavaScript] JS中对Base64的解析

    JS中对Base64的解析 <script type="text/javascript"> /** * UTF16和UTF8转换对照表 * U+00000000 – U ...

  2. js中变量base64加密传输

    首先对base64进行定义: var Base64 = { _keyStr : "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz01 ...

  3. JS中使用base64编码上传下载文件

    下载文件:使用FileSaver.js   https://github.com/eligrey/FileSaver.js/blob/master/README.md 手机端UC浏览器无法下载  安卓 ...

  4. js中实现base64加密、解密

    //base64加密 解密 /* //1.加密 var result = Base.encode('125中文'); //--> "MTI15Lit5paH" //2.解密 ...

  5. js 中json字符串转化json对象

    JSON字符串:var str = '{ "name": "cxh", "sex": "man" }'; JSON对象: ...

  6. js中字符串怎么转化为日期

    var str = "2010-08-01"; // 转换日期格式 str = str.replace(/-/g, '/'); // "2010/08/01"; ...

  7. JS中小数如何转化为百分数并能四舍五入

    <script type="text/javascript">//n表示百分数保留的位数 function toPercent(n){ n = n || 2; retu ...

  8. js中对象转化成字符串、数字或布尔值的转化规则

    js中对象可以转化成 字符串.数字.布尔值 一.对象转化成字符串: 规则: 1.如果对象有toString方法,则调用该方法,并返回相应的结果:(代码通常会执行到这,因为在所有对象中都有toStrin ...

  9. js中字符串转换为日期和比较大小

    本文转载于:http://yun342173024.iteye.com/blog/1873756在做前端校验的时候,要做日期比较的校验,在js中把字符串转化为日期,一时之间还真不知道在js中怎么把一个 ...

  10. 细数JS中实用且强大的操作符&运算符

    目录 1,前言 2,代码+应用 2.1,短路运算符 || 2.2,短路运算符 && 2.3,零合并操作符 ?? 2.4,可选链操作符 ?. 2.5,位运算符 & 和 | 2.6 ...

随机推荐

  1. WAVE音频文件格式及其64位扩展格式的简要介绍

    正文 关于 WAVE 文件格式,网上有不少介绍,但关于WAVE 64位扩展格式的介绍却是几乎没有. 所以本文的目的是简要介绍标准的 WAVE 格式,以及两种主要的扩展格式. 文中所有代码都用C语言来描 ...

  2. Vue 注册全局组件的方式

    一.语法:Vue的实例.component("组件名称",组件) 1.方式一:这个组件就是 vue文件 import { createApp,h } from 'vue' //引入 ...

  3. JZOJ 5382. 数列

    题目大意 给出数列 \(\text a\),询问区间 \([l,r]\) 内,满足 \(l\le i \le j\le r\) 的 \(i,j\) 使 \(a_i xor a_{i+1} xor... ...

  4. JZOJ 4212. 【五校联考1day2】我想大声告诉你

    题目 解析 设 \(f_{i,j}\) 表示 \(i+1..n\) 个人能受到 \(j\) 次攻击的概率 因为选人出局的顺序是无所谓的,所以我们设从 \(1..n\) 依次选人出局 那么转移时需要分类 ...

  5. JZOJ 5354. 【NOIP2017提高A组模拟9.9】导弹拦截

    题目 如题 分析 第一问很简单, \(dp\) 即可(得先排序) 第二问很经典,最小路径覆盖问题,最大流解决 \(n-Maxflow\) \(Code\) #include<cstdio> ...

  6. Python中的魔术方法大全

    魔术方法 一种特殊的方法而已 特点 不需要人工调用,在特定时刻自动触发执行 魔术方法种类 1.__init__初始化方法******* 触发时机:实例化对象之后触发作用:为对象添加对象的所属成员参数: ...

  7. Pdfjs第三方插件使用

    项目中时常会遇到在线预览PDF文件的需求,网上一找也能找到很多,但被使用率高的并不多,经过多次实验发现被应该最多的还属pdfjs插件. 首先介绍下:Pdf.js插件是由Mozilla 主导推出的 作用 ...

  8. 在orangepi 3 lts上使用SmartCardReader(读卡器)

    前期工作 orangepi 3 lts使用全志的H6芯片,通过查询该芯片的datasheet和user manual,可以发现H6有两个scr接口,分别为scr0和scr1,理论上是支持读卡器接口的, ...

  9. 狂神--Docker

    官网地址 官网 https://www.docker.com/ 官方文档Docker文档是超详细的 https://docs.docker.com/ 仓库地址 https://hub.docker.c ...

  10. CVE-2018-8174漏洞复现(IE浏览器远程代码执行漏洞)

    漏洞介绍:CVE-2018-8174这个漏洞是针对IE浏览器的一个远程代码执行漏洞,是Windows VBScript Engine 代码执行漏洞,由于VBScript脚本执行引擎(vbscript. ...