Vous générez CSV, qui est essentiellement un fichier texte brut. Il n'y a aucun moyen de spécifier des informations d'encodage dans ce type de fichiers. La plupart des éditeurs de texte implémentent (meilleur ou pire) la détection automatique de l'encodage. Excel ne le fait pas. Excel supposera simplement ANSI lorsque vous cliquez avec le bouton droit sur un fichier CSV. (Vous devez utiliser le menu "Ouvrir" pour être invité à encoder.)
Votre seule option restante (à part passer à un autre format de sortie) est de convertir les données en ANSI, soit avec mb_convert_encoding() ou avec iconv() . Mais maintenant vous avez un autre problème :ANSI n'est pas un véritable encodage, cela signifie essentiellement "quel que soit l'encodage défini dans mon Ordinateur Windows". Vous devez d'abord connaître l'encodage typique de la plupart de vos utilisateurs. Cela dépend principalement du pays. Par exemple, de nombreux pays d'Europe occidentale utilisent Win-1252.