js转换字符串为base64位

在window对象下有两个api,可以对ASCII编码进行编译,得到base64位的字符串

clipboard.png

  1. btoa:编码为base64
  2. atob:解码为ASCII码

此种方法不能对中文进行操作,因为ASCII码中没有中文,如果编码会得到乱码

要编码中文可以先用encodeURIComponent() 对字符串进行转义,转义后再btoa()成base64就可以,
用atob()解码后再调用decodeURIComponent()得到原来的字符

兼容性:不兼容ie9及以下老版本

兼容ie9以下需要自己封装:
参考>> js设置一个字符串为base64格式

var Base64 = {// private property
_keyStr : "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",// public method for encoding
encode : function (input) {var output = "";var chr1, chr2, chr3, enc1, enc2, enc3, enc4;var i = 0;input = Base64._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 +this._keyStr.charAt(enc1) + this._keyStr.charAt(enc2) +this._keyStr.charAt(enc3) + this._keyStr.charAt(enc4);}return output;
},// public method for decoding
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 = this._keyStr.indexOf(input.charAt(i++));enc2 = this._keyStr.indexOf(input.charAt(i++));enc3 = this._keyStr.indexOf(input.charAt(i++));enc4 = this._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 = Base64._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;
}}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/451205.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

7.15模拟赛

T1.fuction 吐槽一波错误拼写。 跟考场思路差不多&#xff0c;只不过细节挺多的呢。 判掉a0,b0,c0的几种组合&#xff0c;还有负数的情况要打标记特殊处理。 然后就是一个拓欧啦&#xff0c;先求出ggcd(a,b)&#xff0c;顺便求出axbyg的x和y&#xff0c;然后根据裴蜀定理&#…

苏宁国美盈利报警:线下乏力线上重金加码

摘要&#xff1a;国美电器则发布盈利预警&#xff0c;预计今年一季度净利润同比大幅减少———这也致使国美股价最近连续低位徘徊。苏宁电器一季报显示&#xff0c;今年1至3月公司营业收入226 .41亿元&#xff0c;同比增长10%&#xff0c;但盈利9.51亿元&#xff0c;同比下降15…

静态变量的多线程同步问题

2019独角兽企业重金招聘Python工程师标准>>> 我们先来讨论一个问题&#xff0c;一个类的静态变量当类被多次实例化的时候&#xff0c;静态变量是否会受影响&#xff1f;首先我们应该清楚的是静态变量是在类被JVM classloader的时候分配内存&#xff0c;并且是分配在…

Hive 行列转换

在京东众多业务中&#xff0c;促销业务充满了复杂性和挑战性&#xff0c;因为业务的灵活性&#xff0c;很多数据都存储成xml和json格式数据&#xff0c;这就要求下游数据分析师们需要对其做解析后方可使用 。 在众多操作中 &#xff0c;有一种是需要对数据做行列转换操作。 数据…

Java WebService 简单实例

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 前言&#xff1a;朋友们开始以下教程前&#xff0c;请先看第五大点的注意事项&#xff0c;以避免不必要的重复操作。 一、准备工作&…

关于JavaScript的数组随机排序

昨天了解了一下Fisher–Yates shuffle费雪耶兹随机置乱算法&#xff0c;现在再来看看下面这个曾经网上常见的一个写法&#xff1a; function shuffle(arr) { arr.sort(function () { return Math.random() - 0.5; }); } 或者使用更简洁的 ES6 的写法&#xff1a; function shu…

通用唯一识别码UUID

UUID是通用唯一识别码&#xff08;Universally Unique Identifier&#xff09;的缩写。UUID 的目的&#xff0c;是让分布式系统中的所有元素&#xff0c;都能有唯一的辨识资讯&#xff0c;而不需要透过中央控制端来做辨识资讯的指定。如此一来&#xff0c;每个人都可以建立不与…

java内省机制 + 内省是什么 + 内省实现方式 + 和反射的区别

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 一、内省是什么、实现方式&#xff1a; 内省&#xff08;Introspector&#xff09;是Java语言对Bean类属性、事件的一种缺省处理方法。…

百度联合长虹发布第二款云手机 售价900元以下

摘要&#xff1a;【搜狐IT消息】5月15日消息&#xff0c;百度今天宣布联合长虹发布第二款智能手机&#xff0c;采用3.5英寸屏幕、300万像素摄像头&#xff0c;650MHz主频处理器&#xff0c;零售价格在700-899元之间&#xff0c;中国联通将为其提供话费补贴。 【搜狐IT消息】5月…

博客园中的源代码格式显示

昨天写了一篇文章&#xff0c;但是在写的时候呢&#xff0c;没有注意&#xff0c;直接将代码复制上去了&#xff0c;今天正好有人提醒&#xff0c;看到了格式的混乱&#xff0c;借此记录整理一下&#xff0c;如何能直接粘贴代码&#xff0c;而且格式&#xff08;缩进&#xff0…

Laravel5.5之事件监听、任务调度、队列

一、事件监听 流程&#xff1a; 1.1 创建event php artisan make:event UserLogin LoginController.php /*** The user has been authenticated.** param \Illuminate\Http\Request $request* param mixed $user* return mixed*/protected function authenticated(Request …

朱江洪功成身退 朱董配解体谁主格力(图)

摘要&#xff1a;中国家电营销委员会副理事长洪仕斌向时代周报记者表示&#xff1a;“朱江洪和董明珠已经完成了他们在格力发展前二十年的使命。“朱董配”解体之后&#xff0c;有人质疑格力“技术营销”的格局必将被打破&#xff0c;难以延续&#xff0c;“董氏班底”与朱江洪…

传腾讯人事大地震 马化腾将重整公司架构

摘要&#xff1a;5月17日消息&#xff0c;传腾讯董事长马化腾将重新组织公司架构&#xff0c;为腾讯大换血。据悉&#xff0c;腾讯之所以选择互动娱乐部门负责人接任这一重要岗位&#xff0c;也是因为互娱部门业绩持续快速发展&#xff0c;成为了“腾讯帝国”发展的核心驱动力之…

Thread.yield()

&#xff08;一&#xff09;java yield()方法注释&#xff1a; /*** A hint to the scheduler that the current thread is willing to yield* its current use of a processor. The scheduler is free to ignore this* hint.** <p> Yield is a heuristic attempt to im…

WSDL 详解

转载自&#xff1a;http://kalogen.javaeye.com/blog/418958 WSDL (Web Services Description Language,Web服务描述语言)是一种XML Application&#xff0c;他将Web服务描述定义为一组服务访问点&#xff0c;客户端可以通过这些服务访问点对包含面向文档信息或面向过程调用的服…

传苹果新iPhone显示屏4英寸 可视面积扩大30%

摘要&#xff1a;北京时间5月17日凌晨消息&#xff0c;据熟知内情的消息人士周三称&#xff0c;苹果计划为其下一代iPhone使用更大的显示屏&#xff0c;并已开始从韩国和日本供应商那里订购新的显示屏。业绩人士指出&#xff0c;苹果为下一代iPhone配备更大显示屏的决定意味着&…

通过IDE生成和手动call调用webservice

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 通过IDE自动生成的代码调用webservice服务 我们的IDE一般来说都是能够通过各种各样的工具来支持我们的开发使我们的开发变得更加的便捷。…

JAVA使用FTPClient类读写FTP

见&#xff1a;http://blog.csdn.net/kardelpeng/article/details/6588284 1.首先先导入相关jar包 2.创建一个连接FTP的工具类FTPUtil.Java [java] view plaincopy package com.metarnet.ftp.util; import java.io.IOException; import java.io.InputStream; import j…

Java IO类库之ObjectInputStream和ObjectOutPutStream

2019独角兽企业重金招聘Python工程师标准>>> 一、ObjectOutputStream 1 - ObjectOuputStream介绍 ObjectOutputStream(对象字节输出流)&#xff0c;用于将一个序列化对象写入到创建ObjectOutputStream时传入的底层字节输入流中&#xff0c;通过源码可知该类继承Outp…

什么是覆盖索引?如何利用覆盖索引进行SQL语句优化?

如果你不知道什么是覆盖索引&#xff0c;那么SQL性能优化便无从谈起&#xff01; 什么是覆盖索引?如何利用索引进行SQL语句优化&#xff1f; 表结构 150多万的数据&#xff0c;这么一个简单的语句&#xff1a; 慢查询日志里居然很多用了1秒的&#xff0c;Explain的结果是&am…