FINAL TOOLBOX
05 // Unicode, Symbol & Encoding WorkbenchUTF8-HEX-INSPECTOR

Unicode Code Point & Surrogate Pair Analyzer

Decomposes arbitrary Unicode text into scalar code points, UTF-8 byte arrays, and UTF-16 code units to debug database collation, regex `/u` flags, and Mojibake encoding bugs.

UTF-8 BYTES
34
CODE POINTS
20
UTF-16 UNITS
22
BYTES / CHAR
1.70
UTF-8 and UTF-16 byte breakdown
#CharCode PointDecimalUTF-8 HexUTF-16
1CU+004367430043
2aU+006197610061
3fU+0066102660066
4éU+00E9233C3 A900E9
5␣U+002032200020
6•U+20228226E2 80 A22022
7␣U+002032200020
8NU+004E784E004E
9aU+006197610061
10ïU+00EF239C3 AF00EF
11vU+0076118760076
12eU+0065101650065
13␣U+002032200020
14•U+20228226E2 80 A22022
15␣U+002032200020
16𝕏U+1D54F120143F0 9D 95 8FD835 DD4F
17␣U+002032200020
18•U+20228226E2 80 A22022
19␣U+002032200020
20🧬U+1F9EC129516F0 9F A7 ACD83E DDEC
Was this tool helpful?

Reference Table

  • 01Precomposed `é` (`U+00E9`, NFC) is 1 code point (2 UTF-8 bytes), whereas decomposed `e` + combining acute (`U+0065 U+0301`, NFD) is 2 code points (3 UTF-8 bytes) that render identically.
  • 02Use `str.normalize('NFC')` before hashing or comparing user-entered strings across macOS (HFS+/APFS NFD) and Linux/Windows (NFC).

Frequently Asked Questions

What is the difference between NFC and NFD Unicode normalization?+

NFC composes base letters + accents into single canonical code points where possible, whereas NFD decomposes them into base characters followed by combining marks.

How are UTF-16 surrogate pairs calculated from a code point U > 0xFFFF?+

Subtract `0x10000` to get 20-bit `u`; High Surrogate = `0xD800 + (u >> 10)`, Low Surrogate = `0xDC00 + (u & 0x3FF)`.

Why does SQL `utf8mb3` reject emojis in MySQL?+

Legacy MySQL `utf8` (`utf8mb3`) only stores up to 3 bytes per character (BMP only); always use `utf8mb4` to store 4-byte supplementary code points.