Codeigniter 的 csv_from_result() 不适用于 UTF-8 字符?

Gla*_*elp 1 php csv codeigniter export

我有一些西里尔文数据,我想使用 Codeigniter 将其导出到 .csv 文件中。问题是 csv_from_result() 方法混淆了这些字符。

\n\n
$this->load->dbutil();\n$delimiter = ",";\n$newline = "\\r\\n";\n\n$report_result =  $this->data_model->get_data_result();\n$data[\'csv\']    = $this->dbutil->csv_from_result($report_result, $delimiter, $newline);\n
Run Code Online (Sandbox Code Playgroud)\n\n

在我看来,我有:

\n\n
<?php\nheader("Content-type: application/csv-tab-delimited-table; charset=utf-8" );\nheader("Content-Disposition: attachment; filename=csvdata.csv" );\nheader("Content-Transfer-Encoding: binary" );\n  echo $csv; \n?> \n
Run Code Online (Sandbox Code Playgroud)\n\n

输出文件包含如下混乱的字符:

\n\n
\xc3\x90\xc2\xa2\xc3\x90\xc2\xb5\xc3\x91\xc3\x91\xe2\x80\x9a \xc3\x90\xc2\xbf\xc3\x90\xc2\xb8\xc3\x91\xc3\x90\xc2\xbc\xc3\x90\xc2\xbe","54","\xc3\x90 \xc3\x90\xc2\xb5\xc3\x91\xe2\x80\x9e\xc3\x90\xc2\xb5\xc3\x91\xe2\x82\xac\xc3\x90\xc2\xb5\xc3\x90\xc2\xbd\xc3\x91\xe2\x80\xa0\n
Run Code Online (Sandbox Code Playgroud)\n

Pro*_*nia 5

ci 的 csv_from_result 生成 utf-8 without BOM,你可以在这里找到区别, 所以你现在需要做的就是将“utf-8 without BOM”转换为“utf-8”,你可以使用以下代码来完成。

$this->load->dbutil();
$delimiter = ",";
$newline = "\r\n";

$report_result =  $this->data_model->get_data_result();
$CSV_data      = $this->dbutil->csv_from_result($report_result, $delimiter, $newline);
$CSV_data = chr(239) . chr(187) . chr(191) .$CSV_data;
$data['csv'] = $CSV_data;
Run Code Online (Sandbox Code Playgroud)