试图出口微软excel中的csv像中文这样的特殊字符,但失败了

我有一个Web应用程序,我试图从数据库导出到CSV。 它与英文字符集完美运行,但是当我把一些中文文本在数据库中我的CSV显示哑巴字符像????

 <?php $con=mysqli_connect(global_dbhost,global_dbusername,global_dbpassword,global_dbdatabase); if(isset($_GET['csv'])) { $query ='SELECT CONCAT("TC00", `t_id`),m_id,s_id,t_name,Description,start_date,end_date,start_time,end_time,status,active FROM tc_task'; $today = date("dmY"); //CSVExport($query); $con=mysqli_connect(global_dbhost,global_dbusername,global_dbpassword,global_dbdatabase); //echo 'inside function'; $sql_csv = mysqli_query($con,$query) or die("Error: " . mysqli_error()); //Replace this line with what is appropriate for your DB abstraction layer file_put_contents("csvLOG.txt","\n inside ajax",FILE_APPEND); header("Content-type:text/octect-stream"); header("Content-Disposition:attachment;filename=caring_data".$today.".csv"); while($row = mysqli_fetch_row($sql_csv)) { print '"' . stripslashes(implode('","',$row)) . "\"\n"; } exit; } ?> 

解决scheme在这里 :

  1. 在记事本中打开(或等效)
  2. 将CSV重新保存为Unicode(不是UTF-8)
  3. 在Excel中打开
  4. 利润

Excel不处理UTF-8。 如果您转到CSV文件的导入选项,您将注意到UTF-8编码没有select。 由于支持Unicode,上面应该可以工作(尽pipe这是一个额外的步骤)。 相当于可能在PHP端完成(如果你可以保存为Unicode而不是UTF-8)。 这似乎可以根据这个页面 ,这表明:

 $unicode_str_for_Excel = chr(255).chr(254).mb_convert_encoding( $utf8_str, 'UTF-16LE', 'UTF-8');