Polish locale test values

Polish identifiers, formats and characters that global commercial products do not handle. 6 values, each with what it breaks and what a correct application does instead.

locale-pl version 1.0, updated 2026-09-25 CC-BY-4.0

Type them one at a time with AltShiftN in the palette, or take them all into a script with nkb emit locale-pl.

PESEL with a valid checksum

locale-pl/pesel-valid
99023012343 99023012343
  • 11 graphemes
  • 11 code points
  • 11 bytes
  • 11 UTF-16 units
What it breaks
A national identifier that passes the checksum but encodes an impossible birth date - accepted by length checks, rejected by real validation.
What a correct application does
Accepted or rejected according to which validation the field claims to do, consistently.

PESEL with a wrong checksum

locale-pl/pesel-bad-checksum
99023012344 99023012344
  • 11 graphemes
  • 11 code points
  • 11 bytes
  • 11 UTF-16 units
What it breaks
Differs from the valid one by a single digit; a field checking only the length cannot tell them apart.
What a correct application does
Rejected with a message that says the checksum failed, not that the length is wrong.

Every Polish diacritic

locale-pl/diacritics-full
ĄĆĘŁŃÓŚŹŻąćęłńóśźż ĄĆĘŁŃÓŚŹŻ ąćęłńóśźż
  • 19 graphemes
  • 19 code points
  • 37 bytes
  • 19 UTF-16 units
What it breaks
Encoding narrower than the full character set replaces these with question marks, and the name is corrupted on save.
What a correct application does
Stored and returned unchanged in every layer, including exports and printouts.

Double-barrelled surname

locale-pl/surname-hyphenated
Kowalska-Nowak Kowalska-Nowak
  • 14 graphemes
  • 14 code points
  • 14 bytes
  • 14 UTF-16 units
What it breaks
Double surnames break name splitting, sorting and the assumption that a surname is one word.
What a correct application does
Stored as one surname; sorting and search treat it as written.

Polish postal code

locale-pl/postal-code
00-950 00-950
  • 6 graphemes
  • 6 code points
  • 6 bytes
  • 6 UTF-16 units
What it breaks
The national postal code format; a field expecting five digits without a separator rejects every real code.
What a correct application does
The expected format shown next to the field, and the separator handled either way.

Street with a building and flat number

locale-pl/street-with-slash
Marszałkowska12/34 Marszałkowska 12/34
  • 19 graphemes
  • 19 code points
  • 20 bytes
  • 19 UTF-16 units
What it breaks
House and flat numbers written with a slash; a field splitting on a slash produces two address lines from one.
What a correct application does
Stored as one line, and exported without splitting.