Handle Unicode text, emoji, encoding, normalization, code points, and safe storage.
Lessons
Understand a common legacy 8-bit encoding.
Latin-1 (ISO-8859-1) is easiest to learn by reading the example, changing it, and observing the result.
// Latin-1 (ISO-8859-1) maps every byte 0-255 to one character.
// The SAME byte means different things in different code pages,
// which is exactly why UTF-8 replaced them.
// "café" in Latin-1 is 4 bytes: 63 61 66 E9
// "café" in UTF-8 is 5 bytes: 63 61 66 C3 A9 (é = two bytes)
const bytes = new TextEncoder().encode('café');
console.log([...bytes].map(b => b.toString(16))); // ['63','61','66','c3','a9']Practice the Latin-1 (ISO-8859-1) example in a small scratch file, then explain what changed and why.