2012-10-14 216 views
0

我有這樣一個簡單的XML腳本:SimpleXML特殊字符?

$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的編碼,因爲它是一個遠程文件。

+1

*它會顯示爲£* ...在哪裏(其中應用程序)? –

+0

例如,如果我在windows下在excel中下載'newfile.csv'。 –

回答

0

一種方法是通過檢測文件中的編碼,通過在捲曲會話中處理標頭。應該有一個Content-Type。否則,xml規範將utf-8定義爲基本字符集,因此您可以嘗試使用它。

如果您不想使用捲曲,您也可以使用mb_detect_encoding,但我會嘗試先使用它。

然後,如果需要,可以使用iconvmb_convert_encoding將類型從utf-8或您喜歡的字符集更改爲任何類型,然後保存該文件。

再見