Handle Unicode text, emoji, encoding, normalization, code points, and safe storage.
Lessons
Understand how UTF-16 represents large code points.
UTF-16 & Surrogate Pairs is easiest to learn by reading the example, changing it, and observing the result.
// JavaScript strings are UTF-16. Characters above U+FFFF use a
// surrogate PAIR of two 16-bit code units.
const emoji = '😀'; // U+1F600
console.log(emoji.length); // 2 (two UTF-16 code units!)
console.log([...emoji].length);// 1 (one code point)
console.log(emoji.charCodeAt(0).toString(16)); // d83d (high surrogate)
console.log(emoji.charCodeAt(1).toString(16)); // de00 (low surrogate)Practice the UTF-16 & Surrogate Pairs example in a small scratch file, then explain what changed and why.