2.0 simple stuff | 2.1 Low BMP | ==> "aZ" | 2.2 High BMP | ==> "a☃Z" | 2.3 Astral | ==> "a💩Z" | 2.4 Low BMP with last byte missing | ==> "aZ" | ==> "a" | 2.5 High BMP with last byte missing | ==> "aZ" | ==> "a" | 2.6 Astral with last byte missing | ==> "aZ" | ==> "a" | 2.7 Lone highest continuation | ==> "aZ" | ==> "a" | 2.8 Two lone highest continuations | ==> "aZ" | ==> "a" | 2.9 Low BMP followed by lowest lone continuation | ==> "aäZ" | ==> "aä" | 2.10 Low BMP followed by highest lone continuation | ==> "aäZ" | ==> "aä" | 2.11 High BMP followed by lowest lone continuation | ==> "a☃Z" | ==> "a☃" | 2.12 High BMP followed by highest lone continuation | ==> "a☃Z" | ==> "a☃" | 2.13 Astral followed by lowest lone continuation | ==> "a💩Z" | ==> "a💩" | 2.14 Astral followed by highest lone continuation | ==> "a💩Z" | ==> "a💩" | 3.0 Boundary conditions | 3.1 Lowest single-byte | ==> "Z" | ==> "ZZ" | 3.2 Lowest single-byte as two-byte overlong sequence | ==> "a" | ==> "aZ" | 3.3 Lowest single-byte as three-byte overlong sequence | ==> "a" | ==> "aZ" | 3.4 Lowest single-byte as four-byte overlong sequence | ==> "a" | ==> "aZ" | 3.5 One below lowest single-byte | ==> "a" | ==> "aZ" | 3.6 Highest single-byte | ==> "a" | ==> "aZ" | 3.7 Highest single-byte as two-byte overlong sequence | ==> "a" | ==> "aZ" | 3.8 Highest single-byte as three-byte overlong sequence | ==> "a" | ==> "aZ" | 3.9 Highest single-byte as four-byte overlong sequence | ==> "a" | ==> "aZ" | 3.10 One past highest single byte (also lone continuation) | ==> "aZ" | ==> "a" | 3.11 Two lone continuations | ==> "aZ" | ==> "a" | 3.12 Three lone continuations | ==> "aZ" | ==> "a" | 3.13 Four lone continuations | ==> "aZ" | ==> "a" | 3.14 Lowest two-byte | ==> "a€" | ==> "a€Z" | 3.15 Lowest two-byte as three-byte overlong sequence | ==> "a" | ==> "aZ" | 3.16 Lowest two-byte as four-byte overlong sequence | ==> "a" | ==> "aZ" | 3.17 Lead one below lowest two-byte | ==> "a" | ==> "aZ" | 3.18 Trail one below lowest two-byte | ==> "a" | ==> "aZ" | 3.19 Highest two-byte | ==> "a߿" | ==> "a߿Z" | 3.20 Highest two-byte as three-byte overlong sequence | ==> "a" | ==> "aZ" | 3.21 Highest two-byte as four-byte overlong sequence | ==> "a" | ==> "aZ" | 3.22 Lowest three-byte | ==> "aࠀ" | ==> "aࠀZ" | 3.23 Lowest three-byte as four-byte overlong sequence | ==> "a" | ==> "aZ" | 3.24 Highest below surrogates | ==> "a퟿" | ==> "a퟿Z" | 3.25 Highest below surrogates as four-byte overlong sequence | ==> "a" | ==> "aZ" | 3.26 First surrogate | ==> "a" | ==> "aZ" | 3.27 First surrogate as four-byte overlong sequence | ==> "a" | ==> "aZ" | 3.28 Last surrogate | ==> "a" | ==> "aZ" | 3.29 Last surrogate as four-byte overlong sequence | ==> "a" | ==> "aZ" | 3.30 Lowest above surrogates | ==> "a" | ==> "aZ" | 3.31 Lowest above surrogates as four-byte overlong sequence | ==> "a" | ==> "aZ" | 3.32 Highest three-byte | ==> "a￿" | ==> "a￿Z" | 3.33 Highest three-byte as four-byte overlong sequence | ==> "a" | ==> "aZ" | 3.34 Lowest four-byte | ==> "a𐀀" | ==> "a𐀀Z" | 3.35 Highest four-byte | ==> "a􏿿" | ==> "a􏿿Z" | 3.36 One past highest four-byte | ==> "a" | ==> "aZ" | 3.37 Highest four-byte with last byte replaced with 0xFF | ==> "a" | ==> "aZ" |