解决这个问题的方法是在导出Excel文件时指定正确的编码。下面是一段PHP代码示例:
$sql = "SELECT * FROM my_table";
$result = mysqli_query($conn, $sql);
// 文件名
$filename = "my_excel_file.xls";
// 创建一个Excel文件
$excel_file = new PHPExcel();
// 设置Excel的属性
$excel_file->getProperties()->setTitle("My Excel File")->setDescription("My Description");
// 添加工作表
$worksheet = $excel_file->setActiveSheetIndex(0);
// 将数据添加到工作表中
$data_row = 1;
while ($row = mysqli_fetch_array($result)) {
$worksheet->setCellValue("A" . $data_row, $row['column1']);
$worksheet->setCellValue("B" . $data_row, $row['column2']);
$data_row++;
}
// 设置编码-关键步骤
$writer = PHPExcel_IOFactory::createWriter($excel_file, 'Excel5');
$writer->setCodePage("utf-8"); // 指定编码
// 输出Excel文件
header("Content-Type: application/vnd.ms-excel");
header("Content-Disposition: attachment; filename=\"$filename\"");
header("Cache-Control: max-age=0");
$writer->save("php://output");
在这个示例中,大家使用了PHPExcel库来创建和操作Excel文件。在最后的输出代码中,大家使用了header()函数来设置Content-Type、Content-Disposition和Cache-Control标头,以确保正确的输出Excel文件格式。
重要的是要注意到setCodePage()方法,这个方法将编码设置为utf-8,以避免乱码问题。在实际运用中,根据需要设置实际的编码。
总之,使用上述方法可以避免MySQL导出Excel文件时出现乱码问题。