You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用psql操作PostgreSQL时出现乱码,如何解决?

PostgreSQL psql乱码问题解决方法

psql出现乱码大多是客户端编码、终端编码与数据库服务器编码不匹配导致的,按以下步骤排查解决:

1. 先确认编码状态

在psql中执行以下命令,查看服务器和客户端的编码:

SHOW server_encoding;  -- 查看数据库服务器编码
SHOW client_encoding;  -- 查看当前psql客户端编码

同时检查终端的编码:

  • Linux/macOS终端执行:echo $LANG
  • Windows命令提示符执行:chcp

2. 临时修复(当前会话生效)

如果客户端编码和服务器编码不一致,在psql里直接设置客户端编码匹配服务器:

SET client_encoding TO 'UTF8';  -- 替换成你的server_encoding值,比如GBK

3. 永久配置(所有会话生效)

修改PostgreSQL配置文件

找到postgresql.conf(路径通常在/var/lib/postgresql/版本/main/或Windows的安装目录下),找到client_encoding参数,设置为和服务器编码一致的值:

client_encoding = 'UTF8'

修改后重启PostgreSQL服务:

  • Linux:sudo systemctl restart postgresql
  • Windows:在服务管理器中重启PostgreSQL服务

调整终端编码

  • Linux/macOS:编辑终端配置文件(如~/.bashrc或~/.zshrc),添加:
    export LANG=en_US.UTF-8
    
    执行source ~/.bashrc(或对应配置文件)生效。
  • Windows:打开命令提示符,执行chcp 65001切换到UTF-8编码;或者右键psql快捷方式→属性→选项,把代码页改成65001。

4. 连接时指定编码

每次连接数据库时直接指定编码,避免终端或配置的影响:

psql -d 你的数据库名 -U 用户名 --set=client_encoding=UTF8

5. 极端情况:数据库编码本身错误

如果服务器编码不是你需要的(比如不是UTF-8),需要备份数据后重新创建数据库:

CREATE DATABASE 新数据库名 WITH ENCODING 'UTF8' LC_COLLATE 'en_US.UTF-8' LC_CTYPE 'en_US.UTF-8' TEMPLATE template0;

之后把旧数据库的数据迁移到新库中。

内容的提问来源于stack exchange,提问作者meirben

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 16:13:16