必须用Notepad++状态栏或file -I命令确认CSV真实编码(如GBK/UTF-8),再在Navicat导入向导第二步手动选择对应Character Set;分隔符、引号和换行符需在第三步严格匹配文件实际格式,避免错位。

Navicat 16 导入 CSV 时,分隔符和编码必须手动确认,不能依赖“自动检测”——尤其编码选错,中文直接变 ??? 或 涓枃。
怎么确认 CSV 文件的真实编码?
别看文件后缀名或瞎猜。Windows 记事本默认存为 GBK,VS Code / Sublime 新建文件默认是 UTF-8(无 BOM),Excel 另存为 CSV 也常输出 GBK。乱码本质就是 Navicat 解码方式和文件字节流不匹配。
- 用
Notepad++打开文件,右下角状态栏直接显示当前编码(如ANSI≈GBK,UTF-8-BOM,UTF-8) - Linux/macOS 下运行:
file -I your_file.csv,输出类似charset=gbk或charset=utf-8 - PowerShell 中可试:
Get-Content -Path "your_file.csv" -Encoding UTF8 -ErrorAction SilentlyContinue | Select-Object -First 1,若报错大概率不是 UTF-8
Navicat 16 导入向导里哪里设编码?
在“导入向导”第二步(选完文件、点“下一步”之后),必须手动点击 Character Set 下拉框——这个选项控制 Navicat 怎么读原始字节,和数据库表的字符集无关。
Miller (mlr) 是一个命令行工具,用于查询、整形和重新格式化名称索引数据,如 CSV、TSV、JSON 和 JSON Lines。它将 awk、sed、cut、join 和 sort 的功能整合到一个专为结构化数据处理而构建的单一工具中。
- 文件是
GBK(比如从 Excel 导出、老系统生成)→ 选GBK - 文件是
UTF-8-BOM或纯UTF-8→ 都选UTF-8(Navicat 会自动处理 BOM) - 绝对不要选
Auto:它只扫描前几百字节,对中文 CSV 极易误判为Latin1 - 如果选错,预览窗口里中文立刻变成
???或乱码字串,此时退回修改即可
分隔符和换行符怎么配才不偏行?
字段错位(比如地址里的换行导致整行数据往后偏一列)看起来像乱码,其实是解析失败。Navicat 第三步(“选择分隔符”页)要同步检查三项:
-
Field Separator:常见是,,但也有用;或\t的,务必和文件实际一致 -
Text Qualifier:默认",用于包裹含逗号或换行的字段;若 CSV 没加引号,又含换行,必出错 -
Line Separator:Windows 是CRLF(\r\n),macOS/Linux 是LF(\n);选Auto多数情况 OK,但混合来源文件建议手动指定
最容易被忽略的是:即使编码和分隔符全对,只要 CSV 里某一行的引号没闭合(比如地址字段漏了结尾 "),后续所有行都会错位——这时得打开文件用文本编辑器查引号配对,而不是反复调 Navicat 设置。

















