我如何查询postgresql集群的编码?

当你创build一个新的postgresql集群时,你可以为集群指定一个编码,但是我不知道如何在集群创build完成后检索它。

我已经看到,用\encoding你可以看到一个编码,但我不知道这是集群的编码或客户端的编码。

我也看到,我可以看到每个数据库使用的编码。

SHOW server_encoding显示另一种编码。

什么是正确的方式来查询初始化过程中使用的值?

群集中的每个数据库都可以有自己的编码,尽pipe这可能对大多数人没有用处。

创build群集时,您指定的编码用于template1和postgres数据库,所以它是所有新数据库的默认值。 不过,您可以使用不同的编码方式从template0创build新的数据库。

\encoding显示用于客户端< – >服务器通信协议的编码,相当于show client_encodingserver_encoding显示用于当前连接到的数据库的编码。 如果连接到template1,它应该显示用于创build群集的编码。 每个数据库的编码都列在pg_database ,例如:should

 select datname, pg_encoding_to_char(encoding) from pg_database 

您可以使用pg_controldata: pg_controldata <path/to/cluster> |grep LC_ ,其中path是您的群集所在的位置。

这将输出类似这样的东西:

LC_COLLATE:en_US.UTF-8

LC_CTYPE:en_US.UTF-8