Excelで生成されたCSVファイルから次のようなXMLドキュメントにコンテンツをインポートしています。
$csv = fopen($csvfile, r);
$words = array();
while (($pair = fgetcsv($csv)) !== FALSE) {
array_push($words, array('en' => $pair[0], 'de' => $pair[1]));
}
挿入されたデータは英語/ドイツ語の表現です。
これらの値をXML構造に挿入し、次のようにXMLを出力します。
$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();
これは正常に機能していますが、1つの非常に奇妙な問題が発生しています。文字列の最初の文字がウムラウト(Österreich
またはのようにÄgypten
)の場合、文字は省略され、結果としてgypten
またはになりsterreich
ます。ウムラウトが文字列()の真ん中にある場合、Russische Föderation
正しく転送されます。同じことが、または何かのようなものにß
もé
当てはまります。
すべてのファイルはUTF-8でエンコードされ、UTF-8で提供されます。
これは私にはかなり奇妙でバグのように思えますが、何かが足りないかもしれません。この辺りには賢い人がたくさんいます。