在 Linux 下使用 pgAdmin(特别是 pgAdmin 4)出现乱码,通常不是数据库本身的问题,而是环境编码 / 字体 / 区域设置导致的。下面是常见原因和解决办法,按出现频率排序。
pgAdmin 依赖系统的 locale 来显示中文。
locale
如果看到:
LANG=C
LC_ALL=
或者不是 zh_CN.UTF-8 / en_US.UTF-8,就容易乱码。
sudo apt install locales
sudo dpkg-reconfigure locales
勾选:
zh_CN.UTF-8
en_US.UTF-8
然后设为默认。
或临时生效:
export LANG=zh_CN.UTF-8
export LC_ALL=zh_CN.UTF-8
pgAdmin 4 默认是 Web 应用(本地浏览器打开)。
sudo apt install fonts-noto-cjk
# 或
sudo apt install fonts-wqy-zenhei
pgadmin4
http://127.0.0.1:5050
不要手动改浏览器编码(保持 UTF-8)
即使界面正常,查询结果显示乱码,可能是数据库编码问题。
SELECT datname, pg_encoding_to_char(encoding)
FROM pg_database;
如果不是 UTF8:
SQL_ASCII
LATIN1
新建数据库时指定:
CREATE DATABASE test
WITH ENCODING='UTF8'
LC_COLLATE='zh_CN.UTF-8'
LC_CTYPE='zh_CN.UTF-8';
⚠️ 已存在的数据库不能修改编码,只能重建。
pgAdmin 中:
Client Encoding: UTF8
如果你是 pgAdmin III(已废弃):
sudo apt install gtk2-engines-pixbuf
locale 是 UTF-8如果你愿意,可以告诉我:
我可以给你更精确的解决方案。