phpmyadmin导出csv中文乱码的根本原因是编码不匹配:默认导出utf-8而wps等工具双击时按gbk解析且忽略bom;解决方法是导出时在自定义模式下将文字字符集设为gb2312,或导入时手动选择utf-8编码。
phpmyadmin 导出 csv 后中文乱码,基本就是编码没对齐——不是文件本身错,而是导出时选的字符集和你后续打开/读取它的工具默认解码方式不匹配。直接改导出设置最稳,别等导出完再折腾转码。
导出时就选对 gb2312 而不是 utf-8
WPS、Excel(尤其双击打开)、甚至部分 PHP 脚本在 Windows 下默认按 GBK/GB2312 解码,而 phpMyAdmin 默认导出 UTF-8 且不带 BOM,结果就是“锟斤拷”。gb2312 是兼容性最广的折中选择:
- 在导出页先选「导出方法」→「自定义」,再选「格式」→「CSV」
- 找到「文字字符集」下拉框,明确选
gb2312(不是utf-8,也不是gbk) -
gb2312覆盖绝大多数简体中文,且 WPS 双击就能正常识别;含 emoji 或生僻字才需坚持 UTF-8 + BOM + 手动导入
导出后用 WPS 手动导入必须选 UTF-8,不能靠双击
如果你已导出 UTF-8 编码的 CSV(比如忘了改设置),别用鼠标双击——那会强制走系统默认编码(GBK),必然乱码。必须走数据导入流程:
- WPS 表格 → 「数据」选项卡 → 「从文本/CSV」
- 选中文件 → 弹窗中「文件原始格式」下拉菜单必须手动选
UTF-8(不是“自动检测”,也不是留空) - 下一步确认分隔符为逗号、字段包围符为双引号,再点「加载」
- 若这里选成
ANSI或不选,WPS 就按 GBK 解,开头三个字节 BOM(\xEF\xBB\xBF)也会被忽略,乱码照旧
fgetcsv() 读取前要跳过 BOM 或转码
如果你用 PHP 脚本读这个 CSV 文件入库,fgetcsv() 本身不处理编码,它只按当前 locale 或文件字节流原样切分。Windows 下 fopen() 常默认用 GBK 解 UTF-8 文件,导致首字段多出 :
- 导出时加了 BOM?读取前先
fseek($fp, 3)跳过开头三字节 - 不确定编码?用
file -i your_file.csv或 VS Code 看右下角真实编码,再用iconv('gb2312', 'utf-8', $line)或mb_convert_encoding()统一转成 UTF-8 再喂给fgetcsv() - 别依赖
fgetcsv()自动识别——它连换行符都可能因字段内含\n而错判,封装符(如双引号)必须提前配对好
真正容易被忽略的点是:phpMyAdmin 界面上那个「字符集」下拉框,只影响它自己读 CSV 的解码动作,不改变 MySQL 连接层的 character_set_client。即使你导出设对了,导入时没执行 SET NAMES utf8mb4,数据进表前仍会被 MySQL 按 latin1 解一次——乱码就发生在入库那一瞬间。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











