【问题标题】:Postgresql - PSQL encoding issuePostgresql - PSQL 编码问题
【发布时间】:2018-03-26 20:44:02
【问题描述】:

我正在尝试为会话设置客户端编码。我在 linux 终端上运行以下命令(安装在远程服务器上的 postgresql。

psql -h localhost -p 5432 -U user -d dbase -c "SET client_encoding to 'LATIN1';"

输出:设置

psql -h localhost -p 5432 -U user -d dbase -c "show client_encoding"

输出:UTF8

为什么会这样?我需要以超级用户身份运行此命令吗? (我不这么认为)

如果我在 Pgadmin4 上运行以下命令,那么它会正确显示 LATIN1 作为输出。

SET client_encoding to 'LATIN1'

show client_encoding

服务器编码设置为 UTF8。

【问题讨论】:

  • SET client_encoding to 'LATIN1'; 不是持久化的,它只为当前会话/连接设置。
  • 是的,我只想要一个会话。如果您同时运行上述 2 个命令,那么它是否至少不会为该会话输出“LATIN1”?
  • 我理解我的错误是每次编写 psql 命令都会创建一个新会话,因此编码默认为原始。如何永久更改?

标签: postgresql encoding psql


【解决方案1】:

设置客户端编码仅适用于当前会话,除非您设置环境变量 PGCLIENTENCODING。

来自 postgresql 文档:如果在客户端环境中定义了环境变量 PGCLIENTENCODING,则在与服务器建立连接时会自动选择该客户端编码。

因此,如果您希望客户端编码保持不变,请尝试设置此环境变量。

或者,如果您想在一个会话中执行多个查询,请查看 -f 参数以设置要解析的文件。 例如:psql -d myDataBase -f myFile

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-01-24
    • 2011-09-25
    • 2017-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-25
    相关资源
    最近更新 更多