Generujesz CSV, który jest w zasadzie zwykłym plikiem tekstowym. Nie ma możliwości określenia informacji o kodowaniu w tego rodzaju plikach. Większość edytorów tekstu implementuje (lepiej lub gorzej) automatyczne wykrywanie kodowania. Excel nie. Excel po prostu przyjmie ANSI, gdy klikniesz plik CSV prawym przyciskiem myszy. (Musisz użyć menu „Otwórz”, aby otrzymać monit o kodowanie.)
Jedyną pozostałą opcją (oprócz przejścia na inny format wyjściowy) jest konwersja danych do ANSI, albo z mb_convert_encoding() lub z iconv() . Ale teraz masz inny problem:ANSI nie jest prawdziwym kodowaniem, oznacza to po prostu „niezależnie od tego, jakie kodowanie jest ustawione w moim Komputer z systemem Windows”. Najpierw musisz poznać typowe kodowanie większości użytkowników. Zależy to głównie od kraju. Na przykład wiele krajów Europy Zachodniej używa Win-1252.