fgetcsv je pierwszą literę ciągu, jeśli jest to Umlaut

Importuję zawartość z pliku CSV wygenerowanego przez Excel do dokumentu XML, takiego jak:

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

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

Wprowadzone dane to wyrażenia angielskie / niemieckie.

Wstawiam te wartości do struktury XML i wyprowadzam XML w następujący sposób:

$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();

To działa dobrze, ale napotykam jeden naprawdę dziwny problem. Kiedy pierwszą literą napisu jest Umlaut (jak wÖsterreich lubÄgypten) znak zostanie pominięty, co spowodujegypten lubsterreich. Jeśli Umlaut jest w środku ciągu (Russische Föderation) zostanie poprawnie przeniesiony. To samo dotyczy rzeczy takich jakß lubé lub cokolwiek.

Wszystkie pliki są kodowane w UTF-8 i podawane w UTF-8.

Wydaje mi się to dość dziwne i podobne do błędów, ale może coś mi brakuje, jest tu wielu mądrych ludzi.

questionAnswers(5)

yourAnswerToTheQuestion