On 10/13/2011 03:09 AM, bushcraftrelf wrote:

Kevin Grittner wrote:


WIN1512 supports characters which are not supported by LATIN1.  If
you sent such characters to the database, what would you expect to
happen?

-Kevin


Hi Kevin,

I forgot to mention a few things. One is that the problem only arises in
postgres 9.1 - I can create exactly the same databases and tables in 9.0 and
have no problems accessing them using psql 9.0.
Also, I set the client_encoding to "LATIN1" and so there should have been no
problem with a mismatch in encoding.

Actually, there still is, because your terminal isn't speaking latin1 so either it'll have errors when converting from the WINxxxx terminal encoding to latin1 or characters will be corrupted where they're not the same in both encodings. Even if it seemed to work, unless you set your *terminal* to latin1 as well it'd produce wrong results.

psql may want to `chcp 65001' to put the shell in unicode mode. You may also need to select a Unicode font for the shell. I seem to recall that "cmd /u" is also useful in some way, but I'm not in front of Windows at the moment so I can't check.

The main difference I have found (if it's any use) is that when I first open
psql 9.0, the \encoding is always set at UTF8 until I change it (which
postgres can convert to LATIN1). When I first open psql 9.1, the \encoding
is set at WIN1252 before I change it. WIN1252 cannot be converted to LATIN1.

It sounds like psql on 9.1 is correctly detecting the shell's encoding, wheras 9.0 is assuming utf-8. Whoopsie!

If that's the case, try running "chcp 65001" before "psql". See if that helps.

--
Craig Ringer

--
Sent via pgsql-bugs mailing list (pgsql-bugs@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-bugs

Reply via email to