0

我有一个像这样的简单 XML 脚本:

$file='example.xml';
if (file_exists($file)) {
    $xml = simplexml_load_file($file);
    $f = fopen('newfile.csv', 'w');

    // array to hold the field names
    $headers = array(); 
    // loop through the first set of fields to get names
    foreach ($xml->Information->children() as $field) { 
        // put the field name into array
        $headers[] = $field->getName(); 
    }
    // print headers to CSV
    fputcsv($f, $headers, ',', '"');

    foreach ($xml->Information as $information) {
        fputcsv($f, get_object_vars($information), ',', '"');
    }
    fclose($f);
}

但是如果里面example.xml有一个£标志,那么newfile.csv里面会显示为£

有什么办法可以克服这个吗?我不知道的编码,example.xml因为它是 wget'd 的远程文件。

4

1 回答 1

0

一种方法是检测文件中的编码,您可以通过在 curl 会话中处理标头来做到这一点。应该有一个Content-Type。否则,xml 规范将 utf-8 定义为基本字符集,因此您可以尝试使用它。

mb_detect_encoding如果你不想使用 curl也可以使用,但我会先尝试使用它。

然后,如果需要,您可以使用iconvmb_convert_encoding将类型从任何类型更改为 utf-8 或您喜欢的字符集,然后保存文件。

再见

于 2012-10-14T13:10:03.173 回答