将UTF8输出到PHPExcel的PHP?

将UTF8输出到PHPExcel的PHP?,php,mysql,phpexcel,Php,Mysql,Phpexcel,我在将数据从utf8 mysql数据库导出到带有PHPExcel的excel工作表并保留中文字符方面遇到问题。我的mysql数据库是utf8,里面有很多汉字,我正在将这些数据导出到一个多页xls文件(excel5),每次导出时,汉字都会变成“?”。我试过utf8_encode(),但它对我不起作用。我还尝试将输出更改为excel2007,认为这将是一个excel5 writer问题 有没有办法让汉字正确导出? 我是否必须将整个php文件设置为utf8?如果是这样的话,我该怎么做呢 以下是我有争议

我在将数据从utf8 mysql数据库导出到带有PHPExcel的excel工作表并保留中文字符方面遇到问题。我的mysql数据库是utf8,里面有很多汉字,我正在将这些数据导出到一个多页xls文件(excel5),每次导出时,汉字都会变成“?”。我试过utf8_encode(),但它对我不起作用。我还尝试将输出更改为excel2007,认为这将是一个excel5 writer问题

有没有办法让汉字正确导出? 我是否必须将整个php文件设置为utf8?如果是这样的话,我该怎么做呢

以下是我有争议的部分:

$res2 = mysql_query("SHOW COLUMNS FROM ".$sheetnametemp);
while($row2 = mysql_fetch_array($res2, MYSQL_NUM)) {
  $counter = 2;
  $cell = $coltemp;
  $cell .= $counter;
  $objPHPExcel->getActiveSheet()->SetCellValue($cell, $row2[0]);
      $result = mysql_query("SELECT * FROM ".$sheetnametemp);
      while($row = mysql_fetch_array($result))
      {
        $counter++;
        $cell2 = $coltemp;
        $cell2 .= $counter;
        utf8_encode($row[$row2[0]]);
        echo "<br />";
        $objPHPExcel->getActiveSheet()->SetCellValue($cell2,utf8_encode($row[$row2[0]]));
      }
$res2=mysql\u查询(“显示来自“$sheetnametemp”的列);
而($row2=mysql\u fetch\u数组($res2,mysql\u NUM)){
$counter=2;
$cell=$coltemp;
$cell.=$counter;
$objPHPExcel->getActiveSheet()->SetCellValue($cell,$row2[0]);
$result=mysql\u查询(“从“$sheetnametemp”中选择*);
while($row=mysql\u fetch\u数组($result))
{
$counter++;
$cell2=$coltemp;
$cell2.=$counter;
utf8_编码($row[$row2[0]]);
回声“
”; $objPHPExcel->getActiveSheet()->SetCellValue($cell2,utf8_encode($row2[0]]); }
我需要使用这些中文字符,因为它是一个多语言的目录数据库,所以将其更改为英文不会有任何帮助。此外,如果这些信息有任何帮助,我目前正在使用Xampp的Mac上。

设置您正在执行的“SET NAMES utf8”或mysql_SET_charset(“utf8”),以确保您与数据库的连接使用UTF-8

您可以使用echo mysql\u client\u编码($conn)测试连接

确保您不再尝试调用utf8_encode()


注意:Excel文件使用代码页来标识文件中使用的字符集,但PHPExcel在内部将该代码页设置为UTF-8的硬编码值,因此文件中的所有字符串内容都应为UTF-8,Excel知道将MS Excel GUI中的工作表解释为UTF-8。如果在您可以查看Excel中的电子表格,然后检查MS Excel中的语言设置,查看它是否配置为处理中文

信用证:。
再次感谢。

请不要使用
mysql\u*
函数来编写新代码。它们不再被维护,社区已经开始。请看?相反,您应该了解并使用或。如果您不能决定哪个,将对您有所帮助。如果您选择PDO,。对不起,我忘了,我已经习惯mysql,但我通常在fina时将其更改为mysqli在这个程序中,也许我会尝试PDO,谢谢你的参考。但是你认为这可能是问题所在吗?在设置单元格值时,你根本不需要对UTF-8数据做任何更改:PHPExcel希望所有字符串内容都是UTF-8。你是在设置正在执行的“SET NAMES utf8”还是mysql_SET_charset(“utf8”),还是$conn;要确保与数据库的连接使用UTF-8?可以使用echo mysql_client_编码($conn)测试连接;Excel文件使用代码页来标识文件中使用的字符集,但PHPExcel在内部将该代码页设置为UTF-8的硬编码值,因此文件中的所有字符串内容都应为UTF-8,Excel知道将MS Excel GUI中的工作表解释为UTF-8。如果您在查看时没有看到中文字符在Excel本身的电子表格中,检查MS Excel中的语言设置,查看是否已将其配置为处理中文。因此,请确保您不再试图在代码中调用utf8_encode()