conversion from wchar_t to server encoding failed: the OS error
Symptoms
A statement failed with SQLSTATE 22021 (character_not_in_repertoire), reported at severity ERROR. This is a Data Exception condition: PostgreSQL emits the message conversion from wchar_t to server encoding failed: the OS error.
- The client receives SQLSTATE
22021(character not in repertoire). - The operation is rejected at
ERRORlevel; the statement does not complete.
What the server log shows
ERROR: conversion from wchar_t to server encoding failed: the OS error
Why PostgreSQL raises this
Class 22 (Data Exception) is raised at run time when a value cannot be represented, converted, or processed by the requested type or function — bad input syntax, out-of-range values, or invalid arguments.
As described in PostgreSQL’s Chapter 8 Data Types and Appendix A (PostgreSQL Error Codes), SQLSTATE 22021 carries the condition name character_not_in_repertoire in class Data Exception. (Paraphrased — see the linked reference for the exact wording.)
Common causes
- A literal or parameter does not match the target type’s input format.
- A value exceeds the range or length the type allows.
- A function received an argument outside its valid domain.
- An encoding, cast, or format conversion failed.
How to fix it
- Validate and sanitize the input value before sending it.
- Cast explicitly to the intended type and confirm the format.
- Widen the column/type or clamp the value to the supported range.
- Reproduce with the exact literal to see which value is rejected.
Version applicability
This message text is present in PostgreSQL 15, 16, 17.
Related & next steps
Reference: PostgreSQL Chapter 8 Data Types.