pgsql-bugs(at)postgresql(dot)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