MySQL SELECT INTO DUMPFILE导出含UTF8非英文文件名乱码问题求助
解决MySQL SELECT INTO DUMPFILE导出UTF8非英文文件名乱码问题
原因分析
Windows系统默认文件系统编码为GBK(或GB2312、GB18030),而MySQL客户端若以UTF8编码传递文件名,会与系统编码不匹配,最终导致生成的文件名乱码。
解决方法
方法1:调整MySQL客户端连接编码
执行导出语句前,先将客户端编码设置为Windows系统对应的GBK编码:
SET NAMES gbk;
随后执行导出语句,需确保文件名使用GBK编码的字符串(若原文件名是UTF8格式,需先转码为GBK再写入SQL):
SELECT data FROM table1 INTO DUMPFILE 'c:\你的非英文文件名';
注:如果通过脚本执行,需保证脚本文件编码为GBK,或提前将文件名转码为GBK后传入。
方法2:用CONVERT函数直接转码
若无法修改客户端编码,可在SQL语句中直接将UTF8文件名转换为GBK编码:
SELECT data FROM table1 INTO DUMPFILE CONVERT('c:\你的UTF8非英文文件名' USING gbk);
此方法会让MySQL自动将UTF8字符串转为GBK编码后传递给Windows系统,生成正确文件名。
方法3:改用mysqldump命令行导出
若上述方法无效,可替换为mysqldump命令行工具,通过指定编码参数规避乱码:
chcp 65001 mysqldump --default-character-set=utf8 -u 用户名 -p 数据库名 table1 --result-file="c:\你的非英文文件名"
注:执行前先通过chcp 65001将命令行窗口编码设置为UTF8,确保文件名参数被正确识别。
内容的提问来源于stack exchange,提问作者want_to_be_calm
相关产品推荐
相关产品推荐

