liveBook · Manning

Basic multilingual plane

As explained in 100 Java Mistakes and How to Avoid Them

The Basic Multilingual Plane is Unicode's plane of code points from U+0000 through U+FFFF.

The Basic Multilingual Plane (BMP) contains Unicode code points from U+0000 through U+FFFF. Java char values cover this range, but a displayed character outside it requires a surrogate pair, so one character may occupy two chars. section 6.1

The char-counting mistake

Splitting a string with substring or processing it char by char can divide an emoji's surrogate pair. The result may display a placeholder character. Combining characters create a second failure: a base symbol and modifier can remain separately valid while losing their intended appearance. section 6.1

How 100 Java Mistakes and How to Avoid Them covers it

How deep it goes
Works through surrogate pairs, combining characters, failed splits, and code-point or grapheme-aware alternatives.
Examples
Uses emoji, a skin-tone modifier, substring chunking, digit checks, codePoints, and BreakIterator.
What it assumes
Assumes Java string and char familiarity while clarifying surrogate-pair behavior from the displayed-character misconception.
What you can do after
Diagnose Unicode string bugs and choose char, code-point, or user-visible-character processing appropriately.
How it connects
Connects Unicode code points, surrogate pairs, combining characters, Java char, String, and BreakIterator.

Related concepts

This explainer was generated by Manning's knowledge graph from the text of 100 Java Mistakes and How to Avoid Them. The section links point to the parts of the book it draws on.