āļāļēāļĢāđāļāđāļēāļĢāļŦāļąāļŠ/āļāļāļāļĢāļŦāļąāļŠ Base64 āđāļ JavaScript: btoa(), atob() āđāļĨāļ° Unicode
āļāļēāļĢāđāļāđāļēāļĢāļŦāļąāļŠāđāļĨāļ°āļāļāļāļĢāļŦāļąāļŠ Base64 āđāļ JavaScript
JavaScript āļĄāļĩāļ§āļīāļāļĩāļāļēāļĢāđāļāļāļąāļ§āļŦāļĨāļēāļĒāļ§āļīāļāļĩāđāļāļāļēāļĢāđāļāđāļēāļĢāļŦāļąāļŠāđāļĨāļ°āļāļāļāļĢāļŦāļąāļŠāļŠāļāļĢāļīāļ Base64 āđāļĄāđāļ§āđāļēāļāļļāļāļāļ°āļāļģāļĨāļąāļāļŠāļĢāđāļēāļāđāļāļāļāļĨāļīāđāļāļāļąāļāđāļāļĢāļēāļ§āđāđāļāļāļĢāđāļŦāļĢāļ·āļāđāļāļīāļĢāđāļāđāļ§āļāļĢāđ Node.js āļāļēāļĢāđāļāđāļēāđāļāļ§āļīāļāļĩāļāļēāļĢāļāļģāļāļēāļāļāļąāļ Base64 āđāļāđāļāļŠāļīāđāļāļāļģāđāļāđāļāļŠāļģāļŦāļĢāļąāļāļāļēāļĢāļāļąāļāļāļēāļĢāļāđāļāļĄāļđāļĨāđāļāļāļēāļĢāļĩāđāļāļĢāļđāļāđāļāļāļāļĩāđāđāļāđāļāđāļāļāļ§āļēāļĄāđāļāđāļ JSON, HTML āđāļĨāļ° URL
āļāļēāļĢāđāļāđ btoa() āđāļĨāļ° atob() āđāļāđāļāļĢāļēāļ§āđāđāļāļāļĢāđ
āļāļąāļāļāđāļāļąāļāļŦāļĨāļąāļāļŠāļāļāļāļąāļ§āļŠāļģāļŦāļĢāļąāļ Base64 āđāļ JavaScript āļāļāļāđāļāļĢāļēāļ§āđāđāļāļāļĢāđāļāļ·āļ btoa() āđāļĨāļ° atob() āļāļ·āđāļāļāļąāļāļāđāļāļąāļāđāļŦāļĨāđāļēāļāļĩāđāđāļāđāļāđāļāļāļēāļĄāļĢāļđāļāđāļāļāļāļēāļĢāļāļąāđāļāļāļ·āđāļāđāļāļāđāļāđāļē â btoa āļĒāđāļāļĄāļēāļāļēāļ "binary to ASCII" āđāļĨāļ° atob āļĒāđāļāļĄāļēāļāļēāļ "ASCII to binary" āļāļąāļāļāđāļāļąāļāđāļŦāļĨāđāļēāļāļĩāđāđāļāđāļĢāļąāļāļāļēāļĢāļŠāļāļąāļāļŠāļāļļāļāđāļāđāļāļĢāļēāļ§āđāđāļāļāļĢāđāļŦāļĨāļąāļāļāļąāđāļāļŦāļĄāļāļĄāļēāļāļēāļāļŦāļĨāļēāļĒāļāļĻāļ§āļĢāļĢāļĐ
āļāļēāļĢāđāļāđāļēāļĢāļŦāļąāļŠāļāđāļ§āļĒ btoa()
const originalString = 'Hello, world!';
const encoded = btoa(originalString);
console.log(encoded);
// Output: SGVsbG8sIHdvcmxkIQ==
āļāļēāļĢāļāļāļāļĢāļŦāļąāļŠāļāđāļ§āļĒ atob()
const base64String = 'SGVsbG8sIHdvcmxkIQ==';
const decoded = atob(base64String);
console.log(decoded);
// Output: Hello, world!
āļāļąāđāļāļŠāļāļāļāļąāļāļāđāļāļąāļāļāļģāļāļēāļāļāļąāļāļŠāļāļĢāļīāļāļāļĩāđāļĄāļĩāđāļāļāļēāļ°āļāļąāļāļāļĢāļ° Latin-1 (āđāļāđāļĨāļ°āļāļąāļāļāļĢāļ°āđāļāļāļāđāļ§āļĒāđāļāļāđāđāļāļĩāļĒāļ§) āļāļĩāđāđāļāđāļāļāđāļāļāļģāļāļąāļāļŠāļģāļāļąāļāļāļĩāđāđāļĢāļēāļāļ°āļāļĨāđāļēāļ§āļāļķāļāļāđāļāđāļ
āļāļēāļĢāļāļąāļāļāļēāļĢ Unicode āđāļĨāļ°āļāļąāļāļāļĢāļ°āļāļĩāđāđāļĄāđāđāļāđ ASCII
āļāļąāļāļŦāļēāļāļĩāđāļāļāļāđāļāļĒ: btoa() āļāļ°āđāļāļīāļāļāđāļāļāļīāļāļāļĨāļēāļāđāļĄāļ·āđāļāđāļāđāļĢāļąāļāļŠāļāļĢāļīāļāļāļĩāđāļĄāļĩāļāļąāļāļāļĢāļ°āļāļāļāļāđāļ§āļ Latin-1 āđāļāđāļ āļāļĩāđāļĄāļāļī āļāļąāļāļāļĢāļ°āļ āļēāļĐāļēāļāļĩāļ āļŦāļĢāļ·āļāļāļąāļāļĐāļĢāļāļĩāđāļĄāļĩāđāļāļĢāļ·āđāļāļāļŦāļĄāļēāļĒāđāļāđāļāđāļŠāļĩāļĒāļ
btoa('Hello ä― åĨ―');
// Error: The string to be encoded contains characters outside of the Latin-1 range.
āđāļāļāļēāļĢāđāļāđāļēāļĢāļŦāļąāļŠāļŠāļāļĢāļīāļ Unicode āļāļļāļāļāđāļāļāđāļāļĨāļāļŠāļāļĢāļīāļāđāļāđāļāđāļāļāđāļāđāļāļ āđāļĨāđāļ§āļāļķāļāđāļāđāļēāļĢāļŦāļąāļŠāđāļāļāđāđāļŦāļĨāđāļēāļāļąāđāļ āļ§āļīāļāļĩāļāļēāļĢāļŠāļĄāļąāļĒāđāļŦāļĄāđāđāļāđ TextEncoder āđāļĨāļ° TextDecoder API:
function unicodeToBase64(str) {
const bytes = new TextEncoder().encode(str);
const binaryString = String.fromCharCode(...bytes);
return btoa(binaryString);
}
function base64ToUnicode(base64) {
const binaryString = atob(base64);
const bytes = Uint8Array.from(binaryString, (c) => c.charCodeAt(0));
return new TextDecoder().decode(bytes);
}
// Usage
const encoded = unicodeToBase64('Hello ä― åĨ― ð');
console.log(encoded);
// Output: SGVsbG8g5L2g5aW9IPCfj4A=
const decoded = base64ToUnicode(encoded);
console.log(decoded);
// Output: Hello ä― åĨ― ð
āđāļāļāļāļīāļāļāļĩāđāđāļāđāļēāļāļ§āđāļēāđāļāđ encodeURIComponent āđāļĨāļ° decodeURIComponent āđāļāđāļ§āļīāļāļĩ TextEncoder/TextDecoder āđāļāđāļāđāļāļĢāđāļāļāļ§āđāļēāđāļĨāļ°āđāļāđāļāđāļāļĨāļđāļāļąāļāļŠāļĄāļąāļĒāđāļŦāļĄāđāļāļĩāđāđāļāļ°āļāļģ
āļāļēāļĢāđāļāđāļēāļĢāļŦāļąāļŠāļāđāļāļĄāļđāļĨāđāļāļāļēāļĢāļĩ (ArrayBuffer)
āđāļĄāļ·āđāļāļāļģāļāļēāļāļāļąāļāđāļāļĨāđ āļĢāļđāļāļ āļēāļ āļŦāļĢāļ·āļāļāđāļāļĄāļđāļĨāđāļāļāļēāļĢāļĩāļāļīāļāļāļēāļ API āđāļāđāļ fetch āļŦāļĢāļ·āļ FileReader āļāļļāļāļĄāļąāļāļāļ°āļĄāļĩ ArrayBuffer āļŦāļĢāļ·āļ Uint8Array āļāļĩāđāļāļ·āļāļ§āļīāļāļĩāļāļēāļĢāđāļāļĨāļāđāļāđāļ Base64:
function arrayBufferToBase64(buffer) {
const bytes = new Uint8Array(buffer);
let binaryString = '';
for (let i = 0; i < bytes.length; i++) {
binaryString += String.fromCharCode(bytes[i]);
}
return btoa(binaryString);
}
function base64ToArrayBuffer(base64) {
const binaryString = atob(base64);
const bytes = new Uint8Array(binaryString.length);
for (let i = 0; i < binaryString.length; i++) {
bytes[i] = binaryString.charCodeAt(i);
}
return bytes.buffer;
}
āļāļēāļĢāđāļāļĨāļāđāļāļĨāđāđāļāđāļ Base64 āđāļāđāļāļĢāļēāļ§āđāđāļāļāļĢāđ
āļāļĩāđāļāļ·āļāļāļąāļ§āļāļĒāđāļēāļāļāļĩāđāļŠāļĄāļāļđāļĢāļāđāđāļāļĒāđāļāđ FileReader āđāļāļ·āđāļāđāļāļĨāļāđāļāļĨāđāļāļĩāđāļāļđāđāđāļāđāđāļĨāļ·āļāļāđāļāđāļ Base64 data URL:
function fileToBase64(file) {
return new Promise((resolve, reject) => {
const reader = new FileReader();
reader.onload = () => resolve(reader.result);
reader.onerror = () => reject(new Error('Failed to read file'));
reader.readAsDataURL(file);
});
}
// Usage with a file input
document.querySelector('input[type="file"]').addEventListener('change', async (e) => {
const file = e.target.files[0];
try {
const dataUrl = await fileToBase64(file);
console.log(dataUrl); // data:image/png;base64,iVBORw0KGgo...
} catch (err) {
console.error('Conversion failed:', err);
}
});
āļāļēāļĢāđāļāđ Base64 āđāļ Node.js
Node.js āļĄāļĩāļāļĨāļēāļŠ Buffer āļŠāļģāļŦāļĢāļąāļāļāļēāļĢāļāļģāđāļāļīāļāļāļēāļĢ Base64 āļāļķāđāļāļĒāļ·āļāļŦāļĒāļļāđāļāļāļ§āđāļē btoa/atob āļāļāļāđāļāļĢāļēāļ§āđāđāļāļāļĢāđ āļāļĨāļēāļŠ Buffer āļāļąāļāļāļēāļĢāļāļēāļĢāđāļāđāļēāļĢāļŦāļąāļŠāđāļĨāļ°āļāļāļāļĢāļŦāļąāļŠāđāļāļĒāļāļąāļāđāļāļĄāļąāļāļī āļĢāļ§āļĄāļāļķāļ Unicode āđāļĨāļ°āļĢāļāļāļĢāļąāļāļĢāļđāļāđāļāļāļāļēāļĢāđāļāđāļēāļĢāļŦāļąāļŠāļŦāļĨāļēāļĒāļĢāļđāļāđāļāļ
āļāļēāļĢāđāļāđāļēāļĢāļŦāļąāļŠāđāļĨāļ°āļāļāļāļĢāļŦāļąāļŠāļāļ·āđāļāļāļēāļ
// Encode a string to Base64
const encoded = Buffer.from('Hello, world!').toString('base64');
console.log(encoded);
// Output: SGVsbG8sIHdvcmxkIQ==
// Decode a Base64 string back to text
const decoded = Buffer.from(encoded, 'base64').toString('utf-8');
console.log(decoded);
// Output: Hello, world!
āļāļēāļĢāļĢāļāļāļĢāļąāļ Unicode āđāļ Node.js
āļāđāļēāļāļāļēāļ btoa() āđāļāđāļāļĢāļēāļ§āđāđāļāļāļĢāđ Buffer āļāļāļ Node.js āļāļąāļāļāļēāļĢ Unicode āđāļāđāļāļĒāđāļēāļāļĢāļēāļāļĢāļ·āđāļ:
const encoded = Buffer.from('Hello ä― åĨ― ð').toString('base64');
console.log(encoded);
// Output: SGVsbG8g5L2g5aW9IPCfj4A=
const decoded = Buffer.from(encoded, 'base64').toString('utf-8');
console.log(decoded);
// Output: Hello ä― åĨ― ð
āļāļēāļĢāļāđāļēāļāđāļāļĨāđāđāļĨāļ°āđāļāđāļēāļĢāļŦāļąāļŠāđāļāđāļ Base64
const fs = require('fs');
// Read a file and encode it to Base64
const buffer = fs.readFileSync('image.png');
const base64 = buffer.toString('base64');
const dataUrl = `data:image/png;base64,${base64}`;
āļāļēāļĢāđāļāđāļēāļĢāļŦāļąāļŠ Base64url āđāļ Node.js
Node.js 15.7.0+ āļĢāļāļāļĢāļąāļāļāļēāļĢāđāļāđāļēāļĢāļŦāļąāļŠ Base64url āđāļāļĒāļāļĢāļ āļāļķāđāļāđāļāļāļāļĩāđ + āļāđāļ§āļĒ - āđāļĨāļ° / āļāđāļ§āļĒ _ āđāļĨāļ°āļĨāļ° padding:
const encoded = Buffer.from('Hello, world!').toString('base64url');
console.log(encoded);
// Output: SGVsbG8sIHdvcmxkIQ (no padding)
const decoded = Buffer.from(encoded, 'base64url').toString('utf-8');
console.log(decoded);
// Output: Hello, world!
āļāđāļāļāļ§āļĢāļāļīāļāļēāļĢāļāļēāļāđāļēāļāļāļĢāļ°āļŠāļīāļāļāļīāļ āļēāļ
āļŠāļģāļŦāļĢāļąāļāļāđāļāļĄāļđāļĨāļāļāļēāļāđāļŦāļāđ āļāļēāļĢāļāļģāđāļāļīāļāļāļēāļĢ Base64 āļāđāļģāđ āļāļēāļāļāđāļēāđāļāđ āļāļĩāđāļāļ·āļāđāļāļĨāđāļāļĨāļąāļāļāļēāļāļāļĢāļ°āļāļēāļĢ:
- āđāļāđ
TextEncoder/TextDecoderāđāļāļāļāļēāļĢāđāļāļĨāļāļāđāļ§āļĒāļāļāđāļāļāļŠāļģāļŦāļĢāļąāļāļŠāļāļĢāļīāļ Unicode - āđāļ Node.js
Buffer.from()āļāļđāļāļāļĢāļąāļāđāļŦāđāđāļŦāļĄāļēāļ°āļŠāļĄāļāļĒāđāļēāļāļĄāļēāļ â āļāļ§āļĢāđāļāđāđāļāļāļāļēāļĢāđāļāļĩāļĒāļāļāļąāļāļāđāļāļąāļāđāļāļ - āļŦāļĨāļĩāļāđāļĨāļĩāđāļĒāļāļāļēāļĢāđāļāļĨāļāđāļāļĨāđāļāļāļēāļāđāļŦāļāđāđāļāđāļ Base64 āđāļ§āđāļāđāļāđāļāļģāđāļāđāļ (āļāļīāļāļēāļĢāļāļēāđāļāđ streaming)
- āļŠāļģāļŦāļĢāļąāļāļāļļāļāļāđāļāļĄāļđāļĨāļāļāļēāļāđāļŦāļāđ āļāļīāļāļēāļĢāļāļēāđāļāđ
BlobāđāļĨāļ°FileReaderāđāļāđāļāļĢāļēāļ§āđāđāļāļāļĢāđāđāļāļ·āđāļāļŦāļĨāļĩāļāđāļĨāļĩāđāļĒāļāļāļēāļĢāļāļĨāđāļāļ main thread
āļĨāļāļāđāļāđāļāļēāļĢāđāļāđāļēāļĢāļŦāļąāļŠ Base64 āļāļāļāđāļĨāļāđ
āļāļāļĨāļāļāļāļēāļĢāđāļāđāļēāļĢāļŦāļąāļŠāđāļĨāļ°āļāļāļāļĢāļŦāļąāļŠāđāļāđāļāļĢāļēāļ§āđāđāļāļāļĢāđāļāļāļāļāļļāļāđāļāļĒāđāļāđ āđāļāļĢāļ·āđāļāļāļĄāļ·āļāđāļāđāļēāļĢāļŦāļąāļŠāđāļĨāļ°āļāļāļāļĢāļŦāļąāļŠ Base64 āļāļāļāđāļĨāļāđāļāļĢāļĩ āđāļĄāđāļāđāļāļāđāļāļĩāļĒāļāđāļāđāļ â āđāļāļĩāļĒāļāļ§āļēāļāļāđāļāļāļ§āļēāļĄāļŦāļĢāļ·āļāļāļąāļāđāļŦāļĨāļāđāļāļĨāđāđāļĨāļ°āļĢāļąāļāļāļĨāļĨāļąāļāļāđ Base64 āļāļąāļāļāļĩ