Re: client encoding that psql command sets - Mailing list pgsql-general

From Albe Laurenz
Subject Re: client encoding that psql command sets
Date
Msg-id A737B7A37273E048B164557ADEF4A58B17CA3DA7@ntex2010i.host.magwien.gv.at
Whole thread Raw
In response to Re: client encoding that psql command sets  ("Tsubasa Sakamoto" <sakamoto.tsubasa@ryobi.co.jp>)
Responses Re: client encoding that psql command sets
Re: client encoding that psql command sets
List pgsql-general
[CC'ed -hackers]

Tsubasa Sakamoto wrote:
>> 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.

> The LC_CTYPE environment variable was set up and re-verified.
> The result of psql command is following.
> 
> [Result]
> % setenv LC_CTYPE ja_JP.eucJP
> 
> % psql postgres -f test.txt -o result.txt EUC_JP
> 
> % psql postgres -f test.txt > result.txt
> UTF8
> 
> % psql postgres -o result.txt < test.txt
> UTF8
> 
> % psql postgres < test.txt > result.txt
> UTF8
> 
> Even when a LC_CTYPE environment variable was set up, the result did not change.
> What do you think?

I think that the documentation contradicts the code.

In bin/psql/settings.h:

typedef struct _psqlSettings
{
[...]
    bool        notty;          /* stdin or stdout is not a tty (as determined
                                 * on startup) */
[...]
} PsqlSettings;

extern PsqlSettings pset;

In bin/psql/command.c and bin/psql/startup.c:

        keywords[6] = "client_encoding";
        values[6] = (pset.notty || getenv("PGCLIENTENCODING")) ? NULL : "auto";

That matches your observations: client_encoding=auto is only
used if both stdin and stdout are attached to a tty.

I suggest the attached documentation fix.

Yours,
Laurenz Albe

Attachment

pgsql-general by date:

Previous
From: Albe Laurenz
Date:
Subject: Re: WAL archive on slave
Next
From: Shaun Thomas
Date:
Subject: Better Connection Statistics