Обсуждение: character_not_in_repertoire vs. untranslatable_character
So there's an ISO error 22021 "character not in repertoire" and a PostgreSQL error 22P05 "untranslatable character" that seem very similar. If I look in backend/utils/mb/wchar.c, it looks as if PostgreSQL uses the first for the case of a corrupted encoding (bytes that can't be decoded to a character at all), and the second for the case of a valid character that isn't available in a conversion's destination encoding. Am I right about that? The names seem sort of confusable, and even reading ISO 9075 drafts I haven't really found any additional detail on what they wanted 22021 to mean, so I guess as long as I know what it means in PG, that's as good as it gets. :) -Chap
Chapman Flack <chap@anastigmatix.net> writes:
> So there's an ISO error 22021 "character not in repertoire" and
> a PostgreSQL error 22P05 "untranslatable character" that seem
> very similar.
> If I look in backend/utils/mb/wchar.c, it looks as if PostgreSQL
> uses the first for the case of a corrupted encoding (bytes that
> can't be decoded to a character at all), and the second for the
> case of a valid character that isn't available in a conversion's
> destination encoding.
Yeah, that's the intended distinction I believe, though I would not
want to swear that we've been 100% consistent. 22021 means "this
character is bad in isolation", AFAICT, so it didn't seem appropriate
for the conversion scenario.
regards, tom lane