Обсуждение: BUG #19410: Cannot ser client_encoding

Поиск
Список
Период
Сортировка

BUG #19410: Cannot ser client_encoding

От
PG Bug reporting form
Дата:
The following bug has been logged on the website:

Bug reference:      19410
Logged by:          Guest-615695028
Email address:      615695028@qq.com
PostgreSQL version: 18.1
Operating system:   Microsoft Windows [版本 10.0.26200.7840]
Description:

PS C:\> psql -U postgres
Password for user postgres:

psql (18.1)
Type "help" for help.

postgres=# SHOW client_encoding;
 client_encoding
-----------------
 GBK
(1 row)


postgres=# SET client_encoding='UTF8';
SET
postgres=# SHOW client_encoding;
 client_encoding
-----------------
 UTF8
(1 row)


postgres=# \q
PS C:\> psql -U postgres
Password for user postgres:

psql (18.1)
Type "help" for help.

postgres=# SHOW client_encoding;
 client_encoding
-----------------
 GBK
(1 row)


postgres=#





BUG #19410: Cannot ser client_encoding

От
"David G. Johnston"
Дата:
On Saturday, February 14, 2026, PG Bug reporting form <noreply@postgresql.org> wrote:
The following bug has been logged on the website:

Bug reference:      19410
Logged by:          Guest-615695028
Email address:      615695028@qq.com
PostgreSQL version: 18.1
Operating system:   Microsoft Windows [版本 10.0.26200.7840]
Description:       


Everything you’ve shown worked as expected.

If you want to always use UTF-8 I’d suggest you figure out how to configure your client to do so.  psql will then just auto-detect whatever is actually in use.  It doesn’t really make sense to use SET with client_encoding.

David J.

Re: BUG #19410: Cannot ser client_encoding

От
Tom Lane
Дата:
"David G. Johnston" <david.g.johnston@gmail.com> writes:
> On Saturday, February 14, 2026, PG Bug reporting form <
> noreply@postgresql.org> wrote:
>> [ SET doesn't persist across sessions ]

> Everything you’ve shown worked as expected.

Indeed.  I suggest reading

https://www.postgresql.org/docs/current/config-setting.html

which not only explains that the effects of SET are per-session,
but lists all the other ways to adjust a server setting.

> If you want to always use UTF-8 I’d suggest you figure out how to configure
> your client to do so.  psql will then just auto-detect whatever is actually
> in use.  It doesn’t really make sense to use SET with client_encoding.

Yeah, that's an orthogonal issue: you really need client_encoding to
match whatever your terminal window is using, or non-ASCII characters
won't display correctly.  So letting psql deduce it from environment
is usually the right thing.

            regards, tom lane