Heim  >  Artikel  >  PHP-Framework  >  Was tun, wenn die von yii2 exportierte CSV-Datei verstümmelt ist?

Was tun, wenn die von yii2 exportierte CSV-Datei verstümmelt ist?

尚
Original
2020-01-13 15:10:342216Durchsuche

Was tun, wenn die von yii2 exportierte CSV-Datei verstümmelt ist?

Der von yii exportierte CSV-Code lautet wie folgt:

/**
 * 导出csv
 * @author yhdsir
 * @param array    $parameter header 表头
 * @param array    $parameter data   数据
 * @param string   $filename         导出名字
 */
public function export($parameter, $filename = '')
{
    if (empty($filename)) {
        $filename = date('Y-m-d_H-i-s');
    }

    $filename = str_replace(array('"', "'", ' ', ','), '_', $filename) . '.csv';

    if (is_array($parameter)) {
        header('Content-Type: application/vnd.ms-excel');
        header('Cache-Control: max-age=0');
        header("Content-Disposition: attachment;filename={$filename}");
        $fp = fopen('php://output', 'w');
        //fwrite($fp, chr(0xEF) . chr(0xBB) . chr(0xBF));  // 添加 BOM
        if (!empty($parameter['header']) && is_array($parameter['header'])) {
            foreach ($parameter['header'] as $i => $v) {
                // CSV的Excel支持GBK编码,一定要转换,否则乱码 
                // $head[$i] = iconv('utf-8', 'gbk', $v); 
                $parameter['header'][$i] = iconv('utf-8', 'gb2312//TRANSLIT//IGNORE', $v);
            }
            // 将数据通过fputcsv写到文件句柄 
            fputcsv($fp, $parameter['header']);
        }
        if (isset($parameter['data'])) {
            foreach ($parameter['data'] as $row) {
                foreach ($row as $i => $v) {
                    $row[$i] = iconv('utf-8', 'gb2312//TRANSLIT//IGNORE', $v);
                }
                fputcsv($fp, $row);
            }
        }
        fclose($fp);

        return true;
    }
    throw new \yii\web\HttpException(500, "Not a valid parameter!");
}

iconv – Die Zeichenfolge wird entsprechend der erforderlichen Zeichenkodierung konvertiert

Anweisungen

iconv ( string $in_charset , string $out_charset , string $str ) : string

String str von in_charset in out_charset konvertieren.

Parameter

in_charset: Eingabezeichensatz.

out_charset: Ausgabezeichensatz.

str: Die zu konvertierende Zeichenfolge.

Rückgabewert: Gibt die konvertierte Zeichenfolge zurück oder FALSE bei einem Fehler.

Empfohlenes Lernen: yii-Tutorial

Das obige ist der detaillierte Inhalt vonWas tun, wenn die von yii2 exportierte CSV-Datei verstümmelt ist?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn