Counting characters that users recognise

Back to list2026-07-12
You

len() disagrees with what users see as one character.

ChatGPT

Because a user-perceived character can be several code points: an emoji with a skin tone modifier is one grapheme and up to four code points. Count grapheme clusters when the number is shown to a person, code points when it is a storage limit.

You

Two visually identical strings fail an equality check.

ChatGPT

Almost certainly composed versus decomposed forms: "é" as one code point or as "e" plus a combining accent. Normalise both sides with NFC before comparing, and store normalised so the problem does not come back through a different door.

You

Any downside worth knowing before I commit?

ChatGPT

It commits you to a format that is tedious to migrate away from later. The first weeks also look worse than doing nothing, which is when most people abandon it.