Navicat连接PostgreSQL出现乱码怎么办

酷明小哥_7574

酷明小哥_7574

2026-09-25

373人浏览

原创

根本原因是客户端(navicat)与服务端(postgresql)字符集协商失败,需确保数据库编码为utf8、连接字符串添加options=-c%20client_encoding%3dutf8、sql编辑器设为utf-8、导出csv选utf-8 with bom,并避免使用无效的alter database set client_encoding。

乱码不是字体问题,也不是“重新选个编码”就能解决的——根本原因是客户端(navicat)和服务端(postgresql)在字符集协商上断开了,字节流发过去,对方按错的规则解,自然显示为?或方块。

确认数据库实际编码是不是UTF8

别信 Navicat 界面里显示的“编码:UTF-8”,得查服务端真实值:

  • 在 Navicat 查询窗口执行:SELECT pg_encoding_to_char(encoding) FROM pg_database WHERE datname = current_database();
  • 必须返回 UTF8;如果返回 SQL_ASCII、GBK 或其他,说明数据库本身不是 UTF-8,此时调客户端毫无意义,得重建库或迁移数据
  • PostgreSQL 一旦初始化为非 UTF-8 编码,无法在线修改,硬改 ALTER DATABASE ... SET client_encoding 是无效操作

连接字符串里必须加 URL 编码后的 client_encoding 参数

Navicat 的「高级」页里勾选「运行前执行命令」并填 SET client_encoding TO 'UTF8';,看似有效,但容易被忽略两点:一是该命令只对当前会话生效,二是某些连接模式(如复用连接池)可能绕过它。最稳的方式是直接塞进连接串:

  • 打开连接编辑页 → 切到「SSH/SSL」标签 → 找到「连接字符串」输入框
  • 在已有内容末尾追加:options=-c%20client_encoding%3DUTF8(注意空格和等号都已 URL 编码)
  • 保存后重连,再执行 SHOW client_encoding;,结果必须是 UTF8,否则参数没生效
  • 不要写成 options=-c client_encoding=UTF8 —— 未编码的空格会导致连接失败

Navicat SQL 编辑器默认用系统 ANSI 编码读文件

新建查询窗口里打中文变空格、粘贴中文后存盘再打开全乱,大概率是编辑器本身没设对编码,跟数据库无关:

navicatmysql
navicatmysql

Navicat For MySQL

下载
  • 关闭所有查询窗口 → 「工具」→「选项」→「外观」→「SQL 编辑器」
  • 「字体」选支持中文的(如 Microsoft YaHei 或 Consolas),「编码」下拉框务必手动选 UTF-8(不是 Auto,也不是 GBK)
  • 别依赖「自动检测编码」——它常把带 BOM 的 UTF-8 当 GBK 解,一保存就毁数据
  • 改完重启 Navicat,新建窗口先执行 SHOW client_encoding; 确认双保险

导出 CSV 含中文,Excel 打开全是乱码

这不是 PostgreSQL 或 Navicat 的 bug,是 Excel 的设计缺陷:Windows 版 Excel 默认用系统编码(GBK)打开无 BOM 的 UTF-8 文件:

  • Navicat 导出时,「编码」选 UTF-8 with BOM(不是单纯的 UTF-8)
  • 如果导出后仍乱码,检查 Excel 是否开了「数据」→「从文本/CSV」导入,选 UTF-8 + 自动检测分隔符,比双击打开可靠得多
  • Linux/macOS 用户用 LibreOffice 或 VS Code 打开 CSV 更省心,它们默认识别 UTF-8 无 BOM

最容易被忽略的是:即使所有配置都对了,只要 Navicat 连接时用了 Windows 默认区域设置(如简体中文 → GBK),而 PostgreSQL 运行在 Linux 上,协议层字节解释就会错位——这种乱码不会报错,INSERT 看似成功,SELECT 出来却是问号,排查起来极隐蔽。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

navicat

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
postgresql常用命令
postgresql常用命令

postgresql常用命令psql、createdb、dropdb、createuser、dropuser、\l、\c、\dt、\d table_name、\du、\i file_name、\e和\q等。本专题为大家提供postgresql相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.10

213

5

常用的数据库软件
常用的数据库软件

常用的数据库软件有MySQL、Oracle、SQL Server、PostgreSQL、MongoDB、Redis、Cassandra、Hadoop、Spark和Amazon DynamoDB。更多关于数据库软件的内容详情请看本专题下面的文章。php中文网欢迎大家前来学习。

2023.11.02

4089

19

postgresql常用命令有哪些
postgresql常用命令有哪些

postgresql常用命令psql、createdb、dropdb、createuser、dropuser、\l、\c、\dt、\d table_name、\du、\i file_name、\e和\q等。更详细的postgresql常用命令,大家可以访问下面的文章。

2023.11.16

607

3

postgresql常用命令介绍
postgresql常用命令介绍

postgresql常用命令有\l、\d、\d5、\di、\ds、\dv、\df、\dn、\db、\dg、\dp、\c、\pset、show search_path、ALTER TABLE、INSERT INTO、UPDATE、DELETE FROM、SELECT等。想了解更多postgresql的相关内容,可以阅读本专题下面的文章。

2023.11.20

1356

6

PostgreSQL性能优化与索引调优实战
PostgreSQL性能优化与索引调优实战

本专题面向后端开发与数据库工程师,深入讲解 PostgreSQL 查询优化原理与索引机制。内容包括执行计划分析、常见索引类型对比、慢查询优化策略、事务隔离级别以及高并发场景下的性能调优技巧。通过实战案例解析,帮助开发者提升数据库响应速度与系统稳定性。

2026.02.12

440

19

PostgreSQL 性能优化与查询执行计划实战
PostgreSQL 性能优化与查询执行计划实战

本专题深入解析PostgreSQL性能优化核心,聚焦查询执行计划的实战应用。通过EXPLAIN命令精准定位瓶颈,结合索引策略、SQL改写与参数调优,系统提升查询效率。从执行计划解读到性能调优全流程,助你掌握数据库性能诊断与优化实战能力。

2026.05.08

130

10

PostgreSQL 在 Next.js / Go 全栈架构中的工程化实践
PostgreSQL 在 Next.js / Go 全栈架构中的工程化实践

本文详解如何利用Next.js(搭配Drizzle ORM)与Go后端构建高性能应用,充分发挥PG在JSONB非结构化存储与pgvector向量检索上的优势。从数据建模到Docker容器化部署,打造支持AI时代的“One Database”工程化解决方案。

2026.05.08

861

10

PostgreSQL高级特性、内核机制与现代数据架构
PostgreSQL高级特性、内核机制与现代数据架构

本专题从MVCC并发控制与WAL日志等内核机制出发,详解JSONB、PostGIS及pgvector等高级特性。探讨如何利用单一引擎支撑关系型、向量及图数据等现代数据架构需求,助您掌握构建高并发、智能化应用的核心技术。

2026.05.08

224

10

数据库三范式
数据库三范式

数据库三范式是一种设计规范,用于规范化关系型数据库中的数据结构,它通过消除冗余数据、提高数据库性能和数据一致性,提供了一种有效的数据库设计方法。本专题提供数据库三范式相关的文章、下载和课程。

2023.06.29

2265

3

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.6万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 133.2万人学习