Unicode

Universal encoding for all languages and emojis (UTF-8, UTF-16).

Unicode is a computing industry standard for consistent encoding of text from most of the world's writing systems. It defines code points (unique numbers) for over 149,000 characters.

Unicode Transformation Formats (UTF):
- UTF-8: Variable 1-4 bytes, ASCII-compatible, ~99% of web
- UTF-16: Variable 2-4 bytes, common in Windows/Java
- UTF-32: Fixed 4 bytes, simple but space-inefficient

Unicode supports all major world scripts, mathematical symbols, emojis (3,000+), and historical scripts. First 128 code points (U+0000 to U+007F) match ASCII.

        graph LR
  Center["Unicode"]:::main
  Pre_ascii["ascii"]:::pre --> Center
  click Pre_ascii "/terms/ascii"
  Rel_ascii["ascii"]:::related -.-> Center
  click Rel_ascii "/terms/ascii"
  Rel_binary["binary"]:::related -.-> Center
  click Rel_binary "/terms/binary"
  Rel_string["string"]:::related -.-> Center
  click Rel_string "/terms/string"
  classDef main fill:#7c3aed,stroke:#8b5cf6,stroke-width:2px,color:white,font-weight:bold,rx:5,ry:5;
  classDef pre fill:#0f172a,stroke:#3b82f6,color:#94a3b8,rx:5,ry:5;
  classDef child fill:#0f172a,stroke:#10b981,color:#94a3b8,rx:5,ry:5;
  classDef related fill:#0f172a,stroke:#8b5cf6,stroke-dasharray: 5 5,color:#94a3b8,rx:5,ry:5;
  linkStyle default stroke:#4b5563,stroke-width:2px;

      

🧒 Explain Like I'm 5

Imagine a huge phone book with a unique number for every letter, symbol, and emoji in every language in the world. Unicode is that phone book—it gives everything a number so all computers can understand all languages!

🤓 Expert Deep Dive

Normalization forms (NFC, NFD, NFKC, NFKD) handle equivalent representations. Grapheme clusters require awareness in string operations. Zero-width joiner (ZWJ) creates composite emojis. BOM (byte order mark) indicates endianness. Punycode enables Unicode in domain names.

🔗 Related Terms

Prerequisites:

📚 Sources