Skip to content

Instantly share code, notes, and snippets.

@gabrielbarros
Last active March 6, 2024 20:54
Show Gist options
  • Save gabrielbarros/64e88d8b20051215613bb512405bdcb2 to your computer and use it in GitHub Desktop.
Save gabrielbarros/64e88d8b20051215613bb512405bdcb2 to your computer and use it in GitHub Desktop.
Unicode code point intervals (UTF-8, UTF-16BE and UTF-32BE)
UNICODE
• Basic plan: 63,488 valid code points
┌───────────────────┬─────────┬─────────┬─────────┬───────────────────┐
│ Interval │ UTF-8 │ UTF-16 │ UTF-32 │ Code points │
├───────────────────┼─────────┼─────────┼─────────┼───────────────────┤
│ U+0000..U+007F │ 1 byte │ 2 bytes │ 4 bytes │ 128 (ASCII) │
├───────────────────┼─────────┼─────────┼─────────┼───────────────────┤
│ U+0080..U+07FF │ 2 bytes │ 2 bytes │ 4 bytes │ 1,920 │
├───────────────────┼─────────┼─────────┼─────────┼───────────────────┤
│ U+0800..U+D7FF │ 3 bytes │ 2 bytes │ 4 bytes │ 53,248 │
├───────────────────┼─────────┼─────────┼─────────┼───────────────────┤
│ U+D800..U+DFFF │ - │ - │ - │ 2,048 (forbidden) │
├───────────────────┼─────────┼─────────┼─────────┼───────────────────┤
│ U+E000..U+FFFF │ 3 bytes │ 2 bytes │ 4 bytes │ 8,192 │
└───────────────────┴─────────┴─────────┴─────────┴───────────────────┘
• Supplementary plan: 1,048,576 code points
┌───────────────────┬─────────┬─────────┬─────────┬───────────────────┐
│ Interval │ UTF-8 │ UTF-16 │ UTF-32 │ Code points │
├───────────────────┼─────────┼─────────┼─────────┼───────────────────┤
│ U+10000..U+10FFFF │ 4 bytes │ 4 bytes │ 4 bytes │ 1,048,576 │
└───────────────────┴─────────┴─────────┴─────────┴───────────────────┘
Total: 1,112,064 code points
────────────────────────────────────────────────────────────────────────────────
UTF-8
┌────────────────┬──────────┬─────────────┐
│ Interval │ 1 byte │ Code points │
├────────────────┼──────────┼─────────────┤
│ U+0000..U+007F │ 00..7F │ 128 (ASCII) │
└────────────────┴──────────┴─────────────┘
┌────────────────┬─────────────────┬─────────────┐
│ Interval │ 2 bytes │ Code points │
├────────────────┼─────────────────┼─────────────┤
│ U+0080..U+07FF │ C2..DF 80..BF │ 1,920 │
└────────────────┴─────────────────┴─────────────┘
┌────────────────┬────────────────────────┬───────────────────┐
│ Interval │ 3 bytes │ Code points │
├────────────────┼────────────────────────┼───────────────────┤
│ U+0800..U+0FFF │ E0 A0..BF 80..BF │ 2,048 │
├────────────────┼────────────────────────┼───────────────────┤
│ U+1000..U+CFFF │ E1..EC 80..BF 80..BF │ 49,152 │
├────────────────┼────────────────────────┼───────────────────┤
│ U+D000..U+D7FF │ ED 80..9F 80..BF │ 2,048 │
├────────────────┼────────────────────────┼───────────────────┤
│ U+D800..U+DFFF │ - │ 2,048 (forbidden) │
├────────────────┼────────────────────────┼───────────────────┤
│ U+E000..U+FFFF │ EE..EF 80..BF 80..BF │ 8,192 │
└────────────────┴────────────────────────┴───────────────────┘
Total: 61,440 valid code points
┌────────────────────┬───────────────────────────────┬─────────────┐
│ Interval │ 4 bytes │ Code points │
├────────────────────┼───────────────────────────────┼─────────────┤
│ U+10000..U+3FFFF │ F0 90..BF 80..BF 80..BF │ 196,608 │
├────────────────────┼───────────────────────────────┼─────────────┤
│ U+40000..U+FFFFF │ F1..F3 80..BF 80..BF 80..BF │ 786,432 │
├────────────────────┼───────────────────────────────┼─────────────┤
│ U+100000..U+10FFFF │ F4 80..8F 80..BF 80..BF │ 65,536 │
└────────────────────┴───────────────────────────────┴─────────────┘
Total: 1,048,576 code points
────────────────────────────────────────────────────────────────────────────────
UTF-16BE
┌────────────────┬─────────────────┬───────────────────┐
│ Interval │ 2 bytes │ Code points │
├────────────────┼─────────────────┼───────────────────┤
│ U+0000..U+D7FF │ 00..D7 00..FF │ 55,296 │
├────────────────┼─────────────────┼───────────────────┤
│ U+D800..U+DFFF │ - │ 2,048 (forbidden) │
├────────────────┼─────────────────┼───────────────────┤
│ U+E000..U+FFFF │ E0..FF 00..FF │ 8,192 │
└────────────────┴─────────────────┴───────────────────┘
Total: 63,488 valid code points
┌───────────────────┬───────────────────────────────┬─────────────┐
│ Interval │ 4 bytes │ Code points │
├───────────────────┼───────────────────────────────┼─────────────┤
│ U+10000..U+10FFFF │ D8..DB 00..FF DC..DF 00..FF │ 1,048,576 │
└───────────────────┴───────────────────────────────┴─────────────┘
────────────────────────────────────────────────────────────────────────────────
UTF-32BE
┌────────────────────┬───────────────────────────┬───────────────────┐
│ Interval │ 4 bytes │ Code points │
├────────────────────┼───────────────────────────┼───────────────────┤
│ U+0000..U+D7FF │ 00 00 00..D7 00..FF │ 55,296 │
├────────────────────┼───────────────────────────┼───────────────────┤
│ U+D800..U+DFFF │ - │ 2,048 (forbidden) │
├────────────────────┼───────────────────────────┼───────────────────┤
│ U+E000..U+FFFF │ 00 00 E0..FF 00..FF │ 8,192 │
├────────────────────┼───────────────────────────┼───────────────────┤
│ U+10000..U+10FFFF │ 00 01..10 00..FF 00..FF │ 1,048,576 │
└────────────────────┴───────────────────────────┴───────────────────┘
Total: 1,112,064 valid code points
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment