
我们可以利用convert函数转换编码从而解决此问题。
(推荐教程:mysql数据库学习教程)
CONVERT()提供一个在不同字符集之间转换数据的方法。
语法:
1 | CONVERT (expr USING transcoding_name)
|
例如:
1 | SELECT CONVERT (latin1field USING utf8) FROM latin1table;
|
在 MySQL中转换代码名与相应的字符集名相同。
举例:
学生表

下面我们将学生表的查询结果导出到Excel文件
1 | select * from student_grade into outfile 'D:/Files/student.xls' ;
|
此时,生成的Excel文件出现了乱码。
这是因为student表是采用utf8编码(可以用show create table student;语句查看一下),而Excel文件则是GB2312编码。
所以我们采用convert将中文字段转换成gbk编码:
1 | select sid, convert ((sname) using gbk) as sname, convert ((gender) using gbk) as gender,class, convert ((major) using gbk) as major from student into outfile 'D:\Files\student.xls' ;
|
这样就不会出现乱码了。