Martijn van Oosterhout <kleptog@svana.org> writes:
> Characters havn't fitted in an unsigned char in a very long time. It's
> obviously bogus for any multibyte encoding (the code even says so). For
> such encodings you could use the system's towupper() (ANSI C/Unix98)
> which will work on any unicode char.
http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/utils/adt/oracle_compat.c?rev=1.67
* If the system provides the needed functions for wide-character manipulation
* (which are all standardized by C99), then we implement upper/lower/initcap
* using wide-character functions. Otherwise we use the traditional <ctype.h>
* functions, which of course will not work as desired in multibyte character
* sets. Note that in either case we are effectively assuming that the
* database character encoding matches the encoding implied by LC_CTYPE.
regards, tom lane