我有一个简单的脚本,它接受一个 CSV 文件并将每一行读入一个数组。然后我循环浏览第一行的每一列(在我的例子中,它包含调查的问题)并将它们打印出来。该调查使用法语,只要问题的第一个字符是特殊字符(é、ê、ç 等),fgetcsv 就会简单地忽略它。
值中间的特殊字符仅在它们是第一个字符时不受影响。
我试图调试这个,但我很困惑。我用文件的内容做了一个 var_dump,字符肯定在那里:
var_dump(utf8_encode(file_get_contents($_FILES['csv_file']['tmp_name'])));
这是我的代码:
if(file_exists($_FILES['csv_file']['tmp_name']) && $csv = fopen($_FILES['csv_file']['tmp_name'], "r"))
{
$csv_arr = array();
//Populate an array with all the cells of the CSV file
while(!feof($csv))
{
$csv_arr[] = fgetcsv($csv);
}
//Close the file, no longer needed
fclose($csv);
// This should cycle through the cells of the first row (questions)
foreach($csv_arr[0] as $question)
{
echo utf8_encode($question) . "<br />";
}
}