При генериране на CSV (Comma-separated values) с PHP се сблъскахме с проблем в encoding-a към UTF-8 от Windows-1251 (най-вероятно решението ще работи и от друг).

Намерихме просто решение на проблема, но ефективно.

$out = fopen ( 'php://output', 'w' );

//Въпросното решение :)
fputs ( $out, $bom = (chr ( 0xEF ) . chr ( 0xBB ) . chr ( 0xBF )) );

fputcsv ( $out, <масив с данни>, ";" );
fclose ( $out );

Вижте още: