Navicat如何设置SQL文件的UTF-8编码

雨敏君_3446

雨敏君_3446

2026-08-20

361人浏览

原创

Navicat导出SQL文件必须勾选“导出为UTF-8编码”,该选项位于导出向导「格式」页底部,控制文件写入磁盘的字节编码;不勾选则按系统locale(如Windows中文版默认GBK)保存致乱码,勾选后仍乱码需同步修正表结构中DEFAULT CHARSET=utf8等声明。

导出时必须勾选“导出为 UTF-8 编码”

navicat 导出 sql 文件时,“编码”下拉框不是默认开启的,必须主动勾选才能生效。这个选项藏在导出向导的「格式」页底部,名称是「导出为 utf-8 编码」——它控制的是文件写入磁盘时用的字节编码,和连接层字符集无关。

  • 不勾选 → 文件按系统 locale(Windows 中文版常为 GBK)保存,中文变乱码或问号
  • 勾选后仍乱码 → 说明文件内容本身含 DEFAULT CHARSET=utf8 或 COLLATE=utf8_general_ci,需同步修正表结构
  • 别选「UTF-8 with BOM」除非你要双击用 Excel 打开;VS Code / Notepad++ 默认识别无 BOM 的 UTF-8

导入时手动指定编码为 UTF-8(不是自动检测)

Navicat 的「运行 SQL 文件」功能默认用编辑器当前默认编码打开文件,不是自动识别真实编码。哪怕你用 VS Code 保存为 UTF-8 无 BOM,它也可能误判成 GBK,导致执行时报 Incorrect string value。

  • 右键数据库 →「运行 SQL 文件」→ 选中文件后,点右上角「编码」按钮
  • 明确选 UTF-8,不要选「自动检测」或留空
  • 如果文件由 Windows 记事本保存,则选 UTF-8 with BOM;其他编辑器(VS Code、Sublime、IntelliJ)保存的默认选 UTF-8
  • 导入失败后清缓存:%AppData%\PremiumSoft\Navicat\Cache 目录删掉再重试

编辑器里打开已有 .sql 文件总乱码?改默认编码设置

新建查询窗口打中文正常,但打开本地 .sql 文件全是方块或问号,说明 Navicat 加载文件时猜错了编码。它默认按系统 locale 推测,Windows 中文版常把 UTF-8 无 BOM 文件当成 GBK。

windows-healing-gateway
windows-healing-gateway

通过任务计划程序自动监控并自修复 Windows 上的 OpenClaw Gateway,具备 AI 诊断和 Telegram 报警功能。

下载
  • 菜单栏 →「工具」→「选项」→「常规」→「默认编码」改成 UTF-8
  • 务必勾选「新建查询时使用默认编码」,否则新建窗口也不生效
  • 已打开的乱码文件:右键标签 →「重新以编码打开…」→ 试选 UTF-8 或 GBK(用 VS Code 先确认真实编码)
  • 永久生效前,先用 file -i your.sql(macOS/Linux)或 xxd your.sql | head -1 看头三字节是否为 ef bb bf(BOM 标识)

为什么选了 UTF-8 还乱码?检查三处隐性字符集冲突

文件编码只是第一关。即使导出/导入都设对了 UTF-8,执行时仍可能乱码,因为 Navicat 没把「文件编码」「连接声明编码」「服务端存储编码」对齐。

  • 连接层必须设 utf8mb4:编辑连接 →「高级」→ 勾选「使用自定义字符集」→ 手动输 utf8mb4(别信下拉菜单)
  • 加初始化命令:SET NAMES utf8mb4; 写进「高级」→「初始化命令」栏(不是 utf8)
  • 查服务端实际字符集:SHOW VARIABLES LIKE 'character_set_server';,如果不是 utf8mb4,建库语句要手补 CHARACTER SET = utf8mb4
  • 导出的 SQL 里若还有 DEFAULT CHARSET=utf8,说明源表没改过字符集,得先 ALTER TABLE ... CONVERT TO CHARACTER SET utf8mb4;
真正卡住人的从来不是“怎么选编码”,而是三处字符集各自为政:文件存的是 UTF-8 字节,Navicat 连接时声明的是 latin1,MySQL 服务端存的时候又按 utf8mb4 解,中间一环错,中文就断在半路。

相关文章

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

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

下载

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

相关专题

更多
数据分析工具有哪些
数据分析工具有哪些

数据分析工具有Excel、SQL、Python、R、Tableau、Power BI、SAS、SPSS和MATLAB等。详细介绍:1、Excel,具有强大的计算和数据处理功能;2、SQL,可以进行数据查询、过滤、排序、聚合等操作;3、Python,拥有丰富的数据分析库;4、R,拥有丰富的统计分析库和图形库;5、Tableau,提供了直观易用的用户界面等等。

2023.10.12

3963

8

SQL中distinct的用法
SQL中distinct的用法

SQL中distinct的语法是“SELECT DISTINCT column1, column2,...,FROM table_name;”。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.27

851

4

SQL中months_between使用方法
SQL中months_between使用方法

在SQL中,MONTHS_BETWEEN 是一个常见的函数,用于计算两个日期之间的月份差。想了解更多SQL的相关内容,可以阅读本专题下面的文章。

2024.02.23

1029

5

SQL出现5120错误解决方法
SQL出现5120错误解决方法

SQL Server错误5120是由于没有足够的权限来访问或操作指定的数据库或文件引起的。想了解更多sql错误的相关内容,可以阅读本专题下面的文章。

2024.03.06

5801

10

sql procedure语法错误解决方法
sql procedure语法错误解决方法

sql procedure语法错误解决办法:1、仔细检查错误消息;2、检查语法规则;3、检查括号和引号;4、检查变量和参数;5、检查关键字和函数;6、逐步调试;7、参考文档和示例。想了解更多语法错误的相关内容,可以阅读本专题下面的文章。

2024.03.06

2743

4

oracle数据库运行sql方法
oracle数据库运行sql方法

运行sql步骤包括:打开sql plus工具并连接到数据库。在提示符下输入sql语句。按enter键运行该语句。查看结果,错误消息或退出sql plus。想了解更多oracle数据库的相关内容,可以阅读本专题下面的文章。

2024.04.07

5800

11

sql中where的含义
sql中where的含义

sql中where子句用于从表中过滤数据,它基于指定条件选择特定的行。想了解更多where的相关内容,可以阅读本专题下面的文章。

2024.04.29

7681

6

sql中删除表的语句是什么
sql中删除表的语句是什么

sql中用于删除表的语句是drop table。语法为drop table table_name;该语句将永久删除指定表的表和数据。想了解更多sql的相关内容,可以阅读本专题下面的文章。

2024.04.29

1050

5

sql中删除一列的命令是什么
sql中删除一列的命令是什么

在sql中,使用alter table语句可以删除一列,语法为:alter table table_name drop column column_name。想了解更多sql的相关内容,可以阅读本专题下面的文章。

2024.04.29

912

5

热门下载

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

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Buffalo框架快速入门指南
Buffalo框架快速入门指南

共0课时 | 0人学习

Conan 2 安装指南
Conan 2 安装指南

共0课时 | 0人学习