"James Pang (chaolpan)" <chaolpan@xxxxxxxxx> 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