【发布时间】:2012-09-05 15:09:08
【问题描述】:
我正在将 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();
这工作正常,但我遇到了一个非常奇怪的问题。当字符串的第一个字母是元音变音时(如Österreich 或Ägypten),该字符将被省略,导致gypten 或sterreich。如果 Umlaut 位于字符串 (Russische Föderation) 的中间,则它会正确传输。 ß 或 é 之类的东西也是如此。
所有文件均采用 UTF-8 编码并以 UTF-8 提供。
这对我来说似乎很奇怪和类似错误,但也许我错过了一些东西,这里有很多聪明人。
【问题讨论】:
-
是否使用了 ucfirst()?我似乎记得带有变音符号的字符的问题,并且不得不在第一个字符上使用 mb_convert_case()。
-
@jornak 这些值在 CSV 文件中是“正确大写”的,所以我认为我不必搞砸它,但我会试一试。
-
为什么不用前缀开始这些词呢?然后在添加这些单词后将其删除。
-
@m90 看看这个,stackoverflow.com/questions/1571626/…
标签: php xml csv character-encoding diacritics