[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:
psql-doc.patch
Description: psql-doc.patch
-- Sent via pgsql-general mailing list (pgsql-general@xxxxxxxxxxxxxx) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-general