Handle Unicode text, emoji, encoding, normalization, code points, and safe storage.
Lessons
Spot and fix text that was encoded twice.
Double Encoding is easiest to learn by reading the example, changing it, and observing the result.
// Mojibake happens when UTF-8 bytes are decoded as the wrong charset.
// "café" wrongly read as Latin-1 becomes "café".
// Cause: bytes written as UTF-8 but read as Latin-1 (or vice versa).
const utf8 = new TextEncoder().encode('café'); // correct bytes
const wrong = new TextDecoder('windows-1252').decode(utf8);
console.log(wrong); // "café" <- mojibake
// Fix: decode with the SAME encoding the bytes were written in.Practice the Double Encoding example in a small scratch file, then explain what changed and why.