数据在存储(Latin1)和传输(GB2312)时的编码错误和修复:
🔍 问题根源分析
-
MySQL 实际存储
- 表字符集为
latin1
,但您通过 Navicat 的 连接属性选择 GB2312 导入数据时,Navicat 自动做了以下转换:
GB2312 → 二进制流 → 以 latin1 解码存储
- 由于
latin1
是单字节编码,这种操作相当于将 GB2312 的中文字符 伪装成 latin1 存储(实际数据未损坏)。
- 表字符集为
-
导出乱码原因
- 直接导出时,Navicat 默认用
latin1
解码数据,但数据本质是 GB2312 编码的二进制流,导致乱码。
- 直接导出时,Navicat 默认用