Php yii发送csv文件字符集

Php yii发送csv文件字符集,php,yii,Php,Yii,我使用yii供电应用程序。我的目标是编写控制器操作,即使用和将一些数据从mongodb导出到csv文件 我的代码: public function actionCatalogDataExport( $catalog_id ) { // prepare all needed variables here $data = ..., $headers = ..., $filename = ... Yii::import('ext.csv.ECSVExport');

我使用yii供电应用程序。我的目标是编写控制器操作,即使用和将一些数据从mongodb导出到csv文件

我的代码:

public function actionCatalogDataExport( $catalog_id )
{
    // prepare all needed variables here
    $data = ..., $headers = ..., $filename = ...     

    Yii::import('ext.csv.ECSVExport');
    $csv = new ECSVExport($data);
    $output = $csv->setHeaders($headers)->setDelimiter(',')->toCSV();
    Yii::app()->getRequest()->sendFile($filename, $output, "text/csv", true);
}
此脚本工作正常,但如果我通过Excel打开结果文件,我会看到类似的内容:

文件编码有一些问题。。。我打开notepad++并将编码更改为UTF-8,没有BOM表,现在文件看起来不错(语言:Ru):

已测试此修复程序,但没有成功结果:

header('Content-type: text/csv; charset=UTF-8'); // no effect

Yii::app()->getRequest()->sendFile(
    $filename, 
    $output, 
    "text/csv; charset=UTF-8", // no effect
    true
);

如何在yii发送文件操作后立即实现此目的?

默认设置参数下,Excel for Windows使用Windows-1251编码打开csv文件。如果需要使用此编码生成正确的数据值,则必须使用


尝试将编码添加到csv文件的开头,如下所示:

$encode = "\xEF\xBB\xBF"; // UTF-8 BOM
$content = $encode . $csv->toCSV();

//var_dump($content);
Yii::app()->getRequest()->sendFile($filename, $content, "text/csv; charset=UTF-8", false);

超级的。简单的方法。塔克斯!
$encode = "\xEF\xBB\xBF"; // UTF-8 BOM
$content = $encode . $csv->toCSV();

//var_dump($content);
Yii::app()->getRequest()->sendFile($filename, $content, "text/csv; charset=UTF-8", false);