Re: BUG #6246: character encoding for 64 bit - Mailing list pgsql-bugs

From Craig Ringer
Subject Re: BUG #6246: character encoding for 64 bit
Date
Msg-id 4E965236.6050307@ringerc.id.au
Whole thread Raw
In response to Re: BUG #6246: character encoding for 64 bit  (bushcraftrelf <cyclingrelf@gmail.com>)
Responses Re: BUG #6246: character encoding for 64 bit  (bushcraftrelf <cyclingrelf@gmail.com>)
List pgsql-bugs
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

pgsql-bugs by date:

Previous
From: bushcraftrelf
Date:
Subject: Re: BUG #6246: character encoding for 64 bit
Next
From: Craig Ringer
Date:
Subject: Re: BUG #6252: After drop the default database 'postgres', I can not create a database by 'createdb.exe'