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 配置

  1. 编辑 postgresql.conf 文件(通常位于 /etc/postgresql/版本/main/)
  2. 确保以下设置:
复制代码

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

相关推荐
洛水水几秒前
数据库连接池详解
数据库·c++·mysql
小江的记录本5 分钟前
【Java基础】集合框架: ArrayList vs LinkedList 核心区别、扩容机制(附《思维导图》+《面试高频考点清单》)
java·数据库·python·mysql·spring·面试·maven
清水白石0089 分钟前
从“点一下导出”到生产级任务队列:Python 异步导出系统设计全景解析
java·数据库·python
快乐的哈士奇10 分钟前
历史对话关联 RAG 上下文检索 — 内部技术介绍
服务器·数据库·oracle
半夜修仙11 分钟前
Redis中List数据类型的常见命令
数据库·redis·缓存
wujt888812 分钟前
mysql 比较数据库
数据库·mysql·oracle
tongluowan00717 分钟前
怎么保证缓存和数据库的一致性
java·数据库·缓存·一致性
恣艺25 分钟前
用Go从零实现一个高性能KV存储引擎:B+Tree索引、WAL持久化、LRU缓存的工程实践
开发语言·数据库·redis·缓存·golang
TDengine (老段)25 分钟前
TDengine 支持数据类型深度解析 — 类型体系、存储编码与选型指南
java·大数据·数据库·系统架构·时序数据库·tdengine·涛思数据
weelinking9 小时前
【产品】00_产品经理用Claude实现产品系列介绍
数据库·人工智能·sql·数据挖掘·github·产品经理