Terdapat berbilang perpustakaan JS yang membolehkan eksport menjadi cemerlang. Tetapi bagaimana jika kita mahu mengikuti pendekatan minimalis mengelakkan kebergantungan tambahan.
Pendekatan paling mudah ialah menghasilkan CSV daripada JSON yang boleh dibuka dengan mudah dalam excel.
Tetapi sebelum saya menunjukkan logik penukaran, mari kita fahami apa itu CSV dan pengekodan mana yang akan kita gunakan semasa membuat fail CSV.
Format CSV
Format Biasa RFC 4180 dan Jenis MIME untuk Fail Nilai Dipisahkan Koma (CSV) ini menentukan takrifan format CSV. Harap maklum bahawa ini adalah memo sahaja kerana format CSV tidak diseragamkan secara rasmi.
Definisi utama
- Setiap rekod terletak pada baris yang berasingan, dihadkan oleh pemisah baris (CRLF).
- Rekod terakhir dalam fail mungkin mempunyai pemisah baris penamat atau tidak.
- Pengepala hendaklah mengandungi bilangan medan yang sama di seluruh fail.
- Setiap medan boleh atau mungkin tidak disertakan dalam petikan berganda.
- Medan yang mengandungi pemisah baris (CRLF), petikan berganda dan koma hendaklah disertakan dalam petikan berganda.
- Jika petikan berganda digunakan untuk melampirkan medan, maka petikan berganda yang muncul di dalam medan mesti dilepaskan dengan mendahuluinya dengan petikan berganda yang lain.
Pengekodan
Dalam data JSON saya, saya mempunyai aksara æ å ø daripada set aksara ISO Latin-1 (ISO/IEC 8859-1) yang perlu dipertimbangkan semasa membuat fail csv.
Beberapa petikan Unicode® Standard Version 15.0 untuk dipertimbangkan.
Unicode lwn UTF-8/16/32
Daripada Unicode® Standard Versi 15.0:
- Unicode ialah standard pengekodan aksara universal untuk aksara dan teks bertulis, yang mengandungi 149,186 aksara daripada skrip dunia.
- Aksara Unicode diwakili dalam salah satu daripada tiga bentuk pengekodan: bentuk 32-bit (UTF-32), bentuk 16-bit (UTF-16) dan bentuk 8-bit (UTF-8).
- Konsortium Unicode menyokong sepenuhnya penggunaan mana-mana daripada tiga borang pengekodan Unicode sebagai cara akur untuk melaksanakan Standard Unicode. Adalah penting untuk tidak jatuh ke dalam perangkap cuba membezakan "UTF-8 berbanding Unicode," sebagai contoh. UTF-8, UTF-16 dan UTF-32 semuanya adalah cara yang sama sah dan selaras untuk melaksanakan aksara yang dikodkan bagi Standard Unicode.
Tanda Pesanan Bait (BOM)
- Watak U+FEFF (UTF-8 EF BB BF) yang digunakan untuk tanda susunan bait dinamakan ruang tanpa patah lebar sifar.
- Borang pengekodan UTF-16 dan UTF-32 teks biasa Unicode adalah sensitif kepada susunan bait yang digunakan semasa menulis data pada fail.
- Pengenalpastian jujukan bait pada permulaan a
aliran data boleh diambil sebagai petunjuk yang hampir pasti bahawa aliran data menggunakan skema pengekodan UTF-8.
Ringkasnya, menambah ruang tanpa putus lebar sifar sebelum rentetan CSV akan menguatkuasakan Excel untuk menggunakan pengekodan UTF-8 dan bukannya 1252: Eropah Barat (Windows) atau beberapa pengekodan lain yang Excel akan pilih sekiranya aksara U+FEFF tidak disediakan.
Saya akan tunjukkan perbezaan antara menghasilkan fail CSV dengan ruang tanpa patah lebar sifar dan tanpanya dalam siaran seterusnya siri ini...
Atas ialah kandungan terperinci Eksport JSON ke CSV: nota tentang CSV dan Unicode. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!