| Previous | Next |
| STATUS_UNMAPPABLE_CHARACTER | STATUS_FLOPPY_VOLUME |
STATUS_UNDEFINED_CHARACTER
An unassigned code point is not the same as malformed Unicode
STATUS_UNDEFINED_CHARACTER describes a character not defined in the Unicode character set installed on the system. Unicode distinguishes ill-formed encoded sequences from valid code points that are unassigned. An unassigned code point can receive a character assignment in a later Unicode version, so versioned text-processing tables matter.
Do not collapse this status into STATUS_ILLEGAL_CHARACTER. First verify that the UTF-8 or UTF-16 sequence is structurally well formed. Then record the code point and the Windows/NLS context that rejected it. Unicode explicitly defines default properties for unassigned code points, but a particular Windows API or subsystem can still reject a character it does not define or support for its operation.
Version differences are especially important when data moves between newer and older systems. Windows exposes NLS version information through GetNLSVersionEx for version-sensitive capabilities. Preserve the producing system, Unicode data version when known, and exact code point before replacing it with U+FFFD; replacement hides whether the original was malformed or merely unknown to older tables.
What to inspect
- The exact code point and confirmation that its encoded sequence is otherwise well formed.
- Windows build, NLS/version context, and the specific API or subsystem that rejected the character.
- Whether the data was produced on a system using newer Unicode assignments or custom text tables.
References
- Unicode Standard: Chapter 3, Conformance and encoding forms
- Unicode Technical Report #17: Character Encoding Model
- Microsoft: GetNLSVersionEx
- Microsoft Open Specifications: NTSTATUS values
Looking for a different code? Search another status or error code.
