SimpleXML特殊字符?

时间:2012-10-14 11:05:05

标签: php xml encoding character-encoding simplexml

我有一个像这样的简单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的远程文件。

1 个答案:

答案 0 :(得分:0)

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

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

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

再见