Saya memiliki garis seperti ini di CSV saya:
"Samsung U600 24"","10000003409","1","10000003427"
Kutipan di sebelah 24
digunakan untuk mengekspresikan inci, sedangkan kutipan di sebelah kutipan itu menutup kolom. Saya membaca baris dengan fgetcsv
tetapi parser membuat kesalahan dan membaca nilainya sebagai:
Samsung U600 24",10000003409"
Saya mencoba meletakkan backslash sebelum kutipan inci, tetapi kemudian saya hanya mendapatkan backslash dalam nama:
Samsung U600 24\"
Apakah ada cara untuk menghindari ini dengan benar di CSV, sehingga nilainya akan Samsung U600 24"
, atau apakah saya harus memasukkannya kembali ke prosesor?
Jawaban:
Gunakan 2 kutipan:
sumber
Tidak hanya tanda kutip ganda, Anda akan membutuhkan tanda kutip tunggal (
'
), tanda kutip ganda ("
), garis miring terbalik (\
) dan NUL (byte NULL).Gunakan
fputcsv()
untuk menulis, danfgetcsv()
membaca, yang akan mengurus semuanya.sumber
fputcsv()
menunjukkan bagaimana Anda dapat menggunakannyafputcsv()
ketika Anda ingin menampilkan dalam format csv ke browser alih-alih file yang sebenarnya.Saya tahu ini adalah posting lama, tapi inilah cara saya menyelesaikannya (bersama dengan mengonversi nilai null ke string kosong) di C # menggunakan metode ekstensi.
Buat kelas statis dengan sesuatu seperti berikut:
Lalu untuk setiap string yang Anda tulis ke CSV, alih-alih:
Anda hanya melakukan:
sumber
Jika nilai berisi koma, karakter baris baru atau kutipan ganda, maka string harus dilampirkan dalam tanda kutip ganda. Misalnya: "Baris baru di bidang ini \ n".
Anda dapat menggunakan alat online di bawah ini untuk melarikan diri dari "" dan, operator. https://www.freeformatter.com/csv-escape.html#ad-output
sumber