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.