postgres linux 环境psql 中文乱码处理
PostgreSQL 中文乱码问题解决方案
PostgreSQL 在 psql 命令行中出现中文乱码通常是由于字符编码设置不正确导致的。以下是几种解决方法:
1. 检查当前数据库编码
sqlCopy Code
SELECT pg_encoding_to_char(encoding) FROM pg_database WHERE datname = current_database();
2. 设置客户端编码
在 psql 中执行:
sqlCopy Code
\encoding UTF8
3. 永久解决方案
方法一:修改环境变量
在用户配置文件(~/.bashrc 或 ~/.bash_profile)中添加:
export PGCLIENTENCODING=UTF8
export LANG=zh_CN.UTF-8
xport LC_ALL=zh_CN.UTF-8
方法二:修改 PostgreSQL 配置
- 编辑 postgresql.conf 文件(通常位于 /etc/postgresql/版本/main/)
- 确保以下设置:
client_encoding = utf8
lc_messages = 'zh_CN.UTF-8'
lc_monetary = 'zh_CN.UTF-8'
lc_numeric = 'zh_CN.UTF-8'
lc_time = 'zh_CN.UTF-8'
方法三:创建数据库时指定编码
sqlCopy Code
CREATE DATABASE dbname WITH ENCODING 'UTF8' LC_COLLATE 'zh_CN.UTF-8' LC_CTYPE 'zh_CN.UTF-8';
4. 检查终端编码
确保终端本身支持 UTF-8 编码,可以通过以下命令检查:
bashCopy Code
echo $LANG
如果显示不是 UTF-8 相关编码,需要修改终端设置。
5. 连接时指定编码
连接数据库时使用:
bashCopy Code
psql -U username -d dbname --set=client_encoding=UTF8