"James Pang (chaolpan)" <chaolpan@cisco.com> writes:
> In this case, the real value stored in database is UTF8 byte sequence
> instead of LATIN1 encoding text, right?
Not if you have server_encoding = LATIN1, as you stated earlier.
In that case, the data in the database is in LATIN1, and chr()
interprets its argument as a LATIN1 code value --- which happens
to look enough like a Unicode code point to be possibly confusing,
until you try to use code points that aren't within LATIN1.
regards, tom lane