`
jiasongmao
  • 浏览: 666840 次
  • 性别: Icon_minigender_1
  • 来自: 石家庄
社区版块
存档分类
最新评论

JavaScript Base64编码函数

阅读更多

本文转载于:http://www.iteye.com/topic/696653

 

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;
	}
 
}
 
分享到:
评论

相关推荐

    javascript base64编码解码函数

    javascript版本的 base64解码和编码函数。

    javascript处理中文base64编码

    在JavaScript中,`btoa()` 和 `atob()` 是两个内置函数,分别用于Base64编码和解码。但是,这两个函数并不支持直接处理Unicode字符,包括中文。当尝试用它们处理包含非ASCII字符的字符串时,可能会导致乱码或错误。 ...

    java和js相互base64编码解码

    `调用.txt`文件可能是测试这两种编码解码方法的简单脚本,它会调用Java和JavaScript中的函数,并比较结果是否一致,确保在不同环境下的Base64编码和解码是兼容的。 总之,Java和JavaScript中Base64编码和解码的实现...

    js 显示base64编码的二进制流网页图片

    而在JavaScript中,可以使用btoa()函数对字符串进行Base64编码,以及atob()函数对Base64编码的字符串进行解码。 关于浏览器对Base64编码数据的支持,当前主流浏览器如IE8、Firefox、Chrome和Opera等都已经支持Data ...

    文件转换为Base64编码

    例如,在Python中,可以使用`base64`模块的`b64encode()`和`b64decode()`函数来实现文件的Base64编码和解码。其他语言如Java、JavaScript、C#等也有相应的API支持。 在实际应用中,Base64编码常用于以下场景: - *...

    js对图片base64编码字符串进行解码并输出图像示例

    需要注意的是,这段代码没有提供完整的Base64解码逻辑,实际的`decodeBase64`函数需要实现Base64编码的解码算法,这通常涉及到将Base64字符映射回它们代表的二进制值。 总的来说,这个示例展示了JavaScript在处理二...

    QT图片BAse64编码与解码

    QByteArray是QT中的一个用于处理字节序列的类,而QCryptographicHash则提供了一些加密哈希函数,其中包括Base64编码和解码。 1. **Base64编码**: - 首先,我们需要读取图片文件的内容到一个QByteArray对象中。 -...

    Base64编码和解码的应用(前后端程序)

    在JavaScript中,可以使用`btoa()`函数对文本进行Base64编码。对于图片,可以通过FileReader API读取图片文件,使用`readAsDataURL()`方法将文件读取为Data URL,其格式就是Base64编码的图片数据。 ```javascript ...

    Base64 编码和解码

    在JavaScript中,我们可以使用内置的`btoa()`和`atob()`函数进行Base64编码和解码。`btoa()`用于编码,`atob()`用于解码。 ```javascript let data = "Hello, World!"; let encodedData = btoa(data); // "SGVsbG8...

    图片文件与Base64编码字节数组字符串互转

    在IT领域,尤其是在Web开发中,图片文件与Base64编码字节数组字符串的转换是一种常见的操作。这种转换在不直接使用图片文件路径或URL,而是将图片数据嵌入到HTML、CSS或JavaScript中时非常有用。下面我们将详细探讨...

    javascript的base64加密解密

    在JavaScript中,我们可以使用内置的`btoa()`和`atob()`函数进行Base64的编码和解码。 `btoa()`函数用于Base64编码,它接受一个字符串作为参数,返回该字符串的Base64编码。例如: ```javascript let str = "Hello,...

    Base64_javascript_base64_

    在JavaScript中,我们可以利用内置的`btoa()`和`atob()`函数来进行Base64的编码和解码。但是,这两个函数在旧版本的IE浏览器中可能不支持,因此在实际开发中,我们需要考虑兼容性问题。 1. `btoa()`:此函数用于...

    javascript base64

    在JavaScript中,`window.btoa()` 和 `window.atob()` 是两个内置函数,分别用于Base64编码和解码。例如: ```javascript let data = "Hello, World!"; let encodedData = btoa(data); console.log(encodedData); /...

    javascript gbk 编码 的Base64.zip

    Base64编码的字符串可以通过`atob`函数(Node.js中需要使用Buffer对象)在JavaScript中解码为ASCII字符串,但这个过程不能直接处理GBK编码的字符。为了将Base64字符串还原为GBK编码的字符串,我们需要先解码为Uint8...

    Base64编码、转换、解码代码

    在编程中,Base64编码和解码通常通过内置库或第三方库实现,例如在Python中可以使用`base64`模块,Java中可以使用`java.util.Base64`类,JavaScript中可以使用`btoa`和`atob`函数等。提供的"Base64ED"可能是一个包含...

    Base122Encoding比base64更节省空间的编码

    在JavaScript环境中,开发者可以利用JavaScript的Buffer对象或 typed arrays 来处理二进制数据,并结合自定义函数实现Base122编码和解码功能。 在提供的压缩包文件"Base122-master"中,可能包含了Base122编码的实现...

    base64编码解码器

    源代码中可能包含对输入文件的读取、Base64编码/解码逻辑以及输出结果到文件或控制台的函数。 5. **`base64.exe`文件** 这是一个已经编译好的可执行文件,可能是基于`base64.cpp`源代码编译生成。用户可以直接运行...

    Base64的js插件

    4. `btoa`: 同样,这是JavaScript内置的Base64编码函数,也可能需要插件进行兼容性处理。 5. 可能还包含其他辅助方法,如检查字符串是否为Base64编码,或者处理URL安全的Base64(即替换'/'为'_','+'为'-')。 在...

    js base64编码格式图片另存为下载

    在JavaScript中,我们可以使用btoa()函数对字符串进行Base64编码,atob()函数则用于解码。对于图片,通常是从服务器获取到一个Base64编码的字符串,例如通过Ajax请求或者直接写在HTML的data URI中。 要实现Base64...

    js的base64和base32加密函数

    在JavaScript中,我们可以使用内置的`btoa()`和`atob()`函数进行Base64编码和解码。但是,这些函数不支持Unicode字符,这可能导致中文或其他非ASCII字符的乱码问题。为了解决这个问题,我们可以使用第三方库,如`...

Global site tag (gtag.js) - Google Analytics