Re: client encoding that psql command sets - Mailing list pgsql-general
From | Adrian Klaver |
---|---|
Subject | Re: client encoding that psql command sets |
Date | |
Msg-id | 52F37651.6010508@gmail.com Whole thread Raw |
In response to | client encoding that psql command sets (坂本 翼 <sakamoto.tsubasa@ryobi.co.jp>) |
Responses |
Re: client encoding that psql command sets
|
List | pgsql-general |
On 02/05/2014 11:43 PM, 坂本 翼 wrote: > Hi all, > > When I tried to psql command, I found that the result of command seems to be > different from explanation of the manual. Please tell me which is > correct performance, the result of command or the explanation of manual. > I show the details as follows. > > [Events] > The encoding that psql command sets has difference between the result of command > and the explanation of manual. > > The following is the explanation of encoding that psql command sets, > which I made extracts from the 9.2 manual. > --------------------------------------------------------------------------- > VI. Reference / II. PostgreSQL Client Applications / psql / Connecting to a Database > "If at least one of standard input or standard output are a terminal, > then psql sets the client encoding to "auto", > which will detect the appropriate client encoding from the locale settings > (LC_CTYPE environment variable on Unix systems). > If this doesn't work out as expected, > the client encoding can be overridden using the environment variable PGCLIENTENCODING." > ---------------------------------------------------------------------------- > Above explanation says that "If at least one of standard input or standard output > are a terminal, then psql sets the client encoding to "auto", > which will detect the appropriate client encoding from the locale settings > (LC_CTYPE environment variable on Unix systems)". > But according to the result from psql command, it seems that the appropriate > client encoding is NOT detected from the locale settings. > > The result of psql command is following. > > [Precondition of test] > - PostgreSQL VL:9.2.4 > - Locale settings encoding : ja_JP.eucJP (LANG) Not sure that it makes a difference but the docs say psql looks at LC_CTYPE not LANG for Unix systems. You did not say what OS you are working on though from the examples I am guessing some form of Unix. > - Client encoding:UTF8 > - client_encoding(paramater of postgresql.conf) : None specified > - "test.txt" is psql's input file which is written "\encoding". > > [Result] > 1) In case both standard input and standard output are a terminal > $ psql postgres -f test.txt -o result.txt > EUC_JP > → Locale setting encoding > > 2) In case only standard input is a terminal > $ psql postgres -f test.txt > result.txt > $ cat result.txt > UTF8 > →Client encoding > > 3) In case only standard output is a terminal > $ psql postgres -o result.txt < test.txt > UTF8 > →Client encoding > > 4) In case both standard input and standard output are not a terminal > $ psql postgres < test.txt > result.txt > $ cat result.txt > UTF8 > →Client encoding > > 1) and 4) performed just as manual, but 2) and 3) do not. > If 2) and 3) performed just as munual, I think that their encoding should be EUC_JP > that is locale setting encoding. > > If manual has mistake, I think that correct explanation is following. > > "If BOTH standard input AND standard output are a terminal, then psql sets > the client encoding to "auto", which will detect the appropriate client encoding > from the locale settings (LC_CTYPE environment variable on Unix systems)." > > What do you think? > > Warmest Regards. > > > > > > > -- Adrian Klaver adrian.klaver@gmail.com
pgsql-general by date: