1
내가 다른 afte 한 줄 쓰기
csv 파일에 간단한
**fwrite**
을하고 있어요 잘못 인코딩 :원하지 않는 공백과에 fwrite
: 이제
//Clean maybe empty entries of last winners $cleaned = array(); $tick = 0; $debug = ""; if (($fh = fopen(LAST_WINNERS_PATH, 'r+b')) !== FALSE) { if (flock($fh, LOCK_EX)) { while (($row = fgetcsv($fh, 300, ';')) !== FALSE) { $tick++; foreach ($row as $key => $value) { $row[$key] = stripslashes($value); } if ($row[0] != '') { array_push($cleaned, $row); } } array_reverse($cleaned); ftruncate($fh, 0); $count = count($cleaned); foreach ($cleaned as $key => $row) { $string = implode(";", $row); if ($key < $count -1) { $string .= PHP_EOL; } fwrite($fh, $string); } flock($fh, LOCK_UN); } else { } fclose($fh); } else { }
을 나는 두 가지 질문이 모든 내용은 utf-8이지만 csv 파일은 항상 쓰기 작업을 수행 할 때마다 ANSI로 변환됩니다. 왜 이런 일을 막을 수 없습니까?
여러 줄의 공백이 추가 될 때마다 첫 번째 줄 앞에. 어떻게 피하는거야?
'fopen'과 핸들러를 보여 주시고, 또한'fputcsv'를 고려해 보셨습니까? – casraf
@ChenAsraf 나는 질문을 편집했다. fputcsv 이전에 시도했지만 동일한 공백 및 인코딩 변환을 만들었습니다. 그래서 더 기본적인 요소 인'fwrite' 함수로 시도해 보았습니다. –
왜 바이너리 모드를 사용하고 있습니까? 필요에 따라 'r +'또는 'w'또는 'w +'만 사용하십시오. 이진 정보를 파일에 넣지 않으므로 이진 플래그 'b'를 사용할 필요가 없습니다. – casraf