0

我有一个网络应用程序,我试图从数据库导出到 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;

}
?>
4

1 回答 1

2

此处提供的解决方案:

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

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

$unicode_str_for_Excel = chr(255).chr(254).mb_convert_encoding( $utf8_str, 'UTF-16LE', 'UTF-8');
于 2013-08-26T05:19:22.537 回答