Это всего лишь предположение, так как вы не указали, что вы подразумеваете под "не работает".
Если файл генерируется правильно, но, по-видимому, содержит символы мусора, вероятно, приложение, которое вы просматриваете, не распознает, что оно содержит UTF-8. Вам необходимо добавить спецификацию в начало файла - 3 байта 0xEF,0xBB,0xBF
(без кодировки).