我有一个像这样的简单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的远程文件。
答案 0 :(得分:0)
执行此操作的一种方法是检测文件中的编码,您可以通过在卷曲会话中处理标头来执行此操作。应该有一个Content-Type
。否则,xml规范,将utf-8定义为基本字符集,因此您可以尝试使用它。
如果您不想使用curl,也可以使用mb_detect_encoding
,但我会先尝试使用它。
然后,如果您愿意,可以使用iconv
或mb_convert_encoding
将类型更改为utf-8或您喜欢的字符集,然后保存文件。
再见