Data gets garbled when writing to csv with fputcsv() / fgetcsv()
问题 There seems to be an encoding issue or bug in PHP with fputcsv() and fgetcsv(). The following PHP code: $row_before = ['A', json_encode(['a', '\\', 'b']), 'B']; print "\nBEFORE:\n"; var_export($row_before); print "\n"; $fh = fopen($file = 'php://temp', 'rb+'); fputcsv($fh, $row_before); rewind($fh); $row_after = fgetcsv($fh); print "\nAFTER:\n"; var_export($row_after); print "\n\n"; fclose($fh); Gives me this output: BEFORE: array ( 0 => 'A', 1 => '["a","\\\\","b"]', 2 => 'B', ) AFTER: array