csv 文件打开乱码,有哪些方法可以解决

发布网友 发布时间:2022-04-22 22:30

我来回答

3个回答

懂视网 时间:2022-04-29 13:41

yii导出CSV代码如下:

/**
 * 导出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 yiiwebHttpException(500, "Not a valid parameter!");
}

iconv — 字符串按要求的字符编码来转换

说明

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

将字符串 str 从 in_charset 转换编码到 out_charset。

参数

in_charset:输入的字符集。

out_charset:输出的字符集。

str:要转换的字符串。

返回值:返回转换后的字符串, 或者在失败时返回 FALSE。

推荐学习:yii教程

热心网友 时间:2022-04-29 10:49

以下步骤可解决csv文件乱码问题:

右键点击csv文档打在右键菜单中打开方式选择记事本。

打开记事本点击文件点击另存为选项。

在编码格式中选择ANSI编码,保存即可。


热心网友 时间:2022-04-29 12:07

使用记事本打开CSV文件
点击菜单:文件-另存为,编码方式选择ANSI
保存完毕后,再用EXCEL打开这个文件就不会出现乱码的情况。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com