pgsql-bugs@postgresql.org writes:
> The string case manipulation functions lower(), upper(), & initcap()
> have no effect on non-ASCII characters in the argument, such as æ, å,
> ø, ä, etc. ASCII chars in the argument are properly up- or down-cased.
> The database encoding is UTF-8.
lower/upper-casing is driven by locale, not encoding.
Unfortunately you didn't mention anything about your locale setup...
regards, tom lane