45 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			45 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| utf8-typed
 | ||
| ==========
 | ||
| 
 | ||
| Base64, TypedArrays, and UTF-8 / Unicode conversions in Browser (and Node) JavaScript
 | ||
| 
 | ||
| This is based wholly on the work by good folks at the MDN.
 | ||
| See <https://developer.mozilla.org/en-US/docs/Web/API/WindowBase64/Base64_encoding_and_decoding>
 | ||
| 
 | ||
| Examples
 | ||
| ========
 | ||
| 
 | ||
| ```javascript
 | ||
| // Base64
 | ||
| 
 | ||
| var myArray = base64DecToArr("QmFzZSA2NCDigJQgTW96aWxsYSBEZXZlbG9wZXIgTmV0d29yaw=="); // "Base 64 \u2014 Mozilla Developer Network"
 | ||
| 
 | ||
| var myBuffer = base64DecToArr("QmFzZSA2NCDigJQgTW96aWxsYSBEZXZlbG9wZXIgTmV0d29yaw==").buffer; // "Base 64 \u2014 Mozilla Developer Network"
 | ||
| 
 | ||
| console.log(myBuffer.byteLength);
 | ||
| 
 | ||
| // Crazy Unicode
 | ||
| 
 | ||
| var sMyInput = "I'm a ☢ ☃ that plays 𝄢 guitar and spea̧͈͖ks Ar̽̾̈́͒͑ ̶̧̨̱̹̭̯ͧ̾ͬC̷̙̲̝͖ͭ̏ͥͮ͟Oͮ͏̮̪̝͍M̲̖͊̒ͪͩͬ̚̚͜!";
 | ||
| 
 | ||
| var aMyUTF8Input = strToUTF8Arr(sMyInput);
 | ||
| 
 | ||
| var sMyBase64 = base64EncArr(aMyUTF8Input);
 | ||
| 
 | ||
| alert(sMyBase64);
 | ||
| 
 | ||
| var aMyUTF8Output = base64DecToArr(sMyBase64);
 | ||
| 
 | ||
| var sMyOutput = UTF8ArrToStr(aMyUTF8Output);
 | ||
| 
 | ||
| alert(sMyOutput);
 | ||
| ```
 | ||
| 
 | ||
| License
 | ||
| =======
 | ||
| 
 | ||
| Mozilla has licensed this code in the Public Domain, which means that I am at liberty to re-license my copy
 | ||
| under the Apache 2, which is something that, general speaking, your legal department will feel more comfortable with.
 | ||
| 
 | ||
| See <https://developer.mozilla.org/en-US/docs/MDN/About#Copyrights_and_licenses>
 |