PHPでcsvダウンロード際に文字化けする現象


csvファイルに記載されているデータを画面に表示し、  
それをcsvとして出力するという課題に取り組んでいます。

文字化けを回避するよう記述しているつもりが、なかなかうまくいかず  
文字化けしてしまいます。

どなたか教えてください。

【元のcsvファイル】※仮のデータ  
"tanaka",5000  
"yoshida",1000  
"suzuki",400

【ブラウザに表示したいデータ】  
社員数：  
売上合計：  
平均売上：

上記をブラウザに表示しcsvファイルとしてダウンロードしたいという感じです。  
サンプルコードは下記に記載致します。

[code]

    <?php
    $datafile = 'sales.csv'; // CSV ファイル
    
    $fh = fopen($datafile, 'r');
    if ($fh) {
      flock($fh, LOCK_SH);
    
      $lst = array();
      while ($line = fgets($fh)) { // ファイルから一行ずつ読み込む
        $all = explode(',', chop($line)); // カンマで分割して配列に
    
        while (($key = array_shift($all)) && ($val = array_shift($all))) { // 配列の先頭から名前と値を取り出す
          $lst{$key} = $val; // 連想配列にセット
          $lst{$key} = mb_convert_encoding($lst{$key}, "SJIS", 'utf-8');
        }
      }
    
    $sum = 0;
    $count = 0;
    
    foreach ($lst as $name => $sale) {
      $count += 1;
      $sum += $sale;
      $avr = $sum / $count;
    }
    
    $fileName = "report.csv";
    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; filename=' . $fileName);
    header('Content-Transfer-Encoding: binary');
    header('Content-Length: ' . filesize($fileName));
    readfile($fileName);
    
    
    echo "社員数：".$count."<br>";
    echo "売上合計：".$sum."<br>";
    echo "売上平均：".$avr."<br>";
    
    flock($fh, LOCK_UN);
    fclose($fh);
    
    }
    ?>
    
[/code]

[![csv文字化け](https://i.stack.imgur.com/AHDhz.png)](https://i.stack.imgur.com/AHDhz.png)




CSVの期待する文字コードはSJISということでよろしいでしょうか？
元のCSVを読み込むときはwhile内でSJIS→UTF8への変換がされていると思うのですが、書き出す時に変換されておらず、UTF8のまま出力されているように見えます。  
echoでの出力内容を、入力時と同じようにmb_convert_encodingでUTF8→SJISに変換してやれば解決しませんでしょうか。

