Handle Unicode text, emoji, encoding, normalization, code points, and safe storage.
Lessons
Defend against look-alike character spoofing.
Confusable Characters is easiest to learn by reading the example, changing it, and observing the result.
// "аpple" (Cyrillic а, U+0430) looks like "apple" (Latin a, U+0061)
const fake = 'аpple';
const real = 'apple';
console.log(fake === real); // false - homograph attack
// Defenses: normalize, restrict scripts, and strip invisible chars
const cleaned = fake
.normalize('NFKC')
.replace(/[\u200B-\u200D\uFEFF]/g, ''); // remove zero-width charsPractice the Confusable Characters example in a small scratch file, then explain what changed and why.