I had a trouble exporting UTF-8 data to Excel, but now it's ok, because I've found this:
Microsoft Excel mangles Diacritics in .csv files?
Look at this line:
echo chr(255) . chr(254) . mb_convert_encoding($csv, 'UTF-16LE', 'UTF-8');
When I remove chr(255) . chr(254) at the beginning the Excel can't display UTF-8 data normally, so can't the browser.
It's not a problem of course, I would just like to know, why those chr(255) and chr(254) are essential.