fgetcsv está comendo a primeira letra de uma String se for um trema

Eu estou importando o conteúdo de um arquivo CSV gerado pelo Excel para um documento XML como:

$csv = fopen($csvfile, r);
$words = array();

while (($pair = fgetcsv($csv)) !== FALSE) {
    array_push($words, array('en' => $pair[0], 'de' => $pair[1]));
}

Os dados inseridos são expressões em inglês / alemão.

Eu insiro esses valores em uma estrutura XML e imprimo o XML da seguinte forma:

$dictionary = new SimpleXMLElement('<dictionary></dictionary>');
//do things
$dom = dom_import_simplexml($dictionary) -> ownerDocument;
$dom -> formatOutput = true;

header('Content-encoding: utf-8'); //<3 UTF-8
header('Content-type: text/xml'); //Headers set to correct mime-type for XML output!!!!

echo $dom -> saveXML();

Isso está funcionando bem, mas estou encontrando um problema realmente estranho. Quando a primeira letra de uma String é um trema (como emÖsterreich ouÄgypten) o caracter será omitido, resultando emgypten ousterreich. Se o Umlaut estiver no meio da String (Russische Föderation) é transferido corretamente. O mesmo vale para coisas comoß oué como queiras.

Todos os arquivos são codificados em UTF-8 e são exibidos em UTF-8.

Isso parece bastante estranho e parecido com um bug para mim, mas talvez eu esteja sentindo falta de algo, há muitas pessoas inteligentes por aqui.

questionAnswers(5)

yourAnswerToTheQuestion