У меня создается простой CSV-файл, содержащий иностранные символы. Я заметил, что если я не включаю метку порядка байтов, иностранные символы не отображаются должным образом в Excel (но они отображаются нормально, когда присутствует спецификация).
Как я могу добавить спецификацию в начало файла при его первом создании? Я пробовал следующее, и это не работает :-/
function processForm($competition, $competitionEntry) {
$BOM = "\xEF\xBB\xBF"; // UTF-8 BOM
$filename = $competition->ID.".csv";
$file = "entries/".$filename;
$fields = array_keys($competitionEntry);
$submittedForm = $competitionEntry;
if(file_exists($file)) {
$fp = fopen($file, 'a');
if($fp &&
fputcsv($fp, $submittedForm) &&
fclose($fp)) {
return true;
}
} else { // CREATE NEW FILE
$fp = fopen($file, 'w');
if($fp &&
fputcsv($fp, $BOM) && // WRITE BOM TO FILE
fputcsv($fp, $fields) &&
fputcsv($fp, $submittedForm) &&
fclose($fp)) {
return true;
}
}
return false;
}
fopen()
(хотя не очень хорошая идея в вашем приложении).... не используйтеfputcsv()
, чтобы попытаться написать это - person Mark Baker   schedule 05.09.2014