Handle Unicode text, emoji, encoding, normalization, code points, and safe storage.
Lessons
Encode Unicode text to base64 correctly.
Base64 & Unicode is easiest to learn by reading the example, changing it, and observing the result.
// btoa() fails on Unicode directly, so encode to UTF-8 bytes first
const text = 'Hello 😀';
const toBase64 = str =>
btoa(String.fromCharCode(...new TextEncoder().encode(str)));
const fromBase64 = b64 =>
new TextDecoder().decode(Uint8Array.from(atob(b64), c => c.charCodeAt(0)));
const encoded = toBase64(text);
console.log(encoded, '->', fromBase64(encoded));Practice the Base64 & Unicode example in a small scratch file, then explain what changed and why.