【问题标题】:Upload csv file and get datas php上传csv文件并获取数据php
【发布时间】:2021-12-19 16:21:15
【问题描述】:

我正在一个网站上工作,该网站在服务器上上传了一个 csv 文件,然后我们获取该文件来检索数据并进行数据库插入。 csv 文件的内容包含 UTF8 重音符号(例如“Cédric”) 使用当前代码,当我们浏览文件时,Cédric 变成了 Cdric,如果我在 Excel 中打开上传的文件,Cédric 写得很好

这是表单代码

<form id="upload" method="post" action="upload" enctype="multipart/form-data" accept-charset="utf-8">
                      <label>File</label>
                      <input id="upload" name="upload" type="file" value="">
                  </div>
              </div>
          </div>
      </div>
    </form>

这里是上传功能

            if (isset($_FILES['upload']) && $_FILES['upload']['error'] == 0) {
            $extension = pathinfo($_FILES['upload']['name'], PATHINFO_EXTENSION);

            if (strtolower($extension) !== 'csv') {
                $error['msg'] = 'Error';
            }

            if (move_uploaded_file($_FILES['upload']['tmp_name'], 'upload/' . $_FILES['upload']['name']))) {
                $error['msg'] = 'OK !';
            }
        }

还有数据恢复码

$files = file('upload/' . $inputFile, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
foreach (array_slice($files, 1, 5000) as $datas){
  $data = explode(';', $datas);
  var_dump($data[0]);
  die();
}

var_dump($data[0]);显示“Cdric”

请问如何才能拥有“Cédric”?

【问题讨论】:

    标签: php csv file-upload utf-8


    【解决方案1】:

    在打印UTF之前尝试设置正确的header信息

    header('Content-Type: text/html; charset=utf-8');
    $files = file('upload/' . $inputFile, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
    foreach (array_slice($files, 1, 5000) as $datas){
      $data = explode(';', $datas);
      echo $data[0];
      die();
    }
    

    【讨论】:

    • 如果我这样做,我有'C dric'
    • 试试 echo ($data[0]);没有 utf8_encode
    • 我有'C�dric'
    • 你确定你的 csv 是 UTF-8 编码的吗?
    • 是的,我创建了要使用 excel 上传的文件并将其保存为 CSV UTF-8
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-11
    • 1970-01-01
    相关资源
    最近更新 更多