Adicionando BOM ao arquivo CSV usando fputcsv

Eu tenho um arquivo CSV simples sendo gerado que inclui caracteres estrangeiros. Observei que, se eu não incluir uma marca de ordem de bytes, os caracteres estrangeiros não aparecerão corretamente no Excel (mas eles aparecerão bem quando uma lista técnica estiver presente).

Como posso adicionar uma lista técnica ao início do arquivo quando ele é criado pela primeira vez? Eu tentei o seguinte e não está funcionando: - /

function processForm($competition, $competitionEntry) {
    $BOM = "\xEF\xBB\xBF"; // UTF-8 BOM

    $filename = $competition->ID.".csv";
    $file = "entries/".$filename;     

    $fields = array_keys($competitionEntry);
    $submittedForm = $competitionEntry;

    if(file_exists($file)) {
        $fp = fopen($file, 'a');
        if($fp && 
            fputcsv($fp, $submittedForm) && 
            fclose($fp)) {
            return true;
        } 
    } else { // CREATE NEW FILE
        $fp = fopen($file, 'w');
        if($fp && 
            fputcsv($fp, $BOM) && // WRITE BOM TO FILE   
            fputcsv($fp, $fields) &&
            fputcsv($fp, $submittedForm) &&
            fclose($fp)) {     
            return true;
        } 
    }
    return false;
}

questionAnswers(1)

yourAnswerToTheQuestion