If you know the data is in UTF8 than you want to set up the header.
I wrote a solution answering to another tread.
The solution is the following: As the UTF-8 byte-order mark is
\xef\xbb\xbf
we should add it to the document‘s header.
<?php
function writeStringToFile($file, $string){
$f=fopen($file,"wb");
$file="\xEF\xBB\xBF".$file;// this is what makes the magic
fputs($f, $string);
fclose($f);}?>
You can adapt it to your code, basically you just want to make sure that you write a UTF8 file (as you said you know your content is UTF8 encoded).