首頁  >  文章  >  web前端  >  將 JSON 匯出為 CSV:關於 CSV 和 Unicode 的說明

將 JSON 匯出為 CSV:關於 CSV 和 Unicode 的說明

王林
王林原創
2024-07-27 00:00:03347瀏覽

Export JSON to CSV: a note on CSV and Unicode

有多個 JS 函式庫允許匯出到 Excel。但是,如果我們想遵循極簡主義方法來避免額外的依賴,該怎麼辦?

最簡單的方法是從 JSON 產生 CSV,可以輕鬆地在 Excel 中開啟。

但是在展示轉換邏輯之前,讓我們先了解一下 CSV 是什麼以及在建立 CSV 檔案時我們將使用哪種編碼。

CSV 格式

此 RFC 4180 逗號分隔值 (CSV) 檔案的通用格式和 MIME 類型指定了 CSV 格式的定義。請注意,這只是一個備忘錄,因為 CSV 格式尚未正式標準化。

主要定義

  1. 每筆記錄位於單獨的行上,由換行符 (CRLF) 分隔。
  2. 檔案中的最後一筆記錄可能有也可能沒有結束換行符。
  3. 標頭應在整個文件中包含相同數量的欄位。
  4. 每個欄位可以用雙引號括起來,也可以不用雙引號括起來。
  5. 包含換行符 (CRLF)、雙引號和逗號的欄位應用雙引號引起來。
  6. 如果使用雙引號括住字段,則字段內出現的雙引號必須透過在其前面加上另一個雙引號來轉義。

編碼

在我的 JSON 資料中,我有來自 ISO Latin-1 (ISO/IEC 8859-1) 字元集的字元 æ å ø,在建立 csv 檔案時必須考慮這些字元。

需要考慮的 Unicode® 標準版本 15.0 的一些摘錄。

Unicode 與 UTF-8/16/32

來自 Unicode® 標準版本 15.0:

  • Unicode 是書寫字元和文字的通用字元編碼標準,包含來自世界各地文字的 149,186 個字元。
  • Unicode 字元以三種編碼形式之一表示:32 位元形式 (UTF-32)、16 位元形式 (UTF-16) 和 8 位元形式 (UTF-8)。
  • Unicode 聯盟完全認可使用三種 Unicode 編碼形式中的任何一種作為實現 Unicode 標準的一致方式。例如,重要的是不要陷入試圖區分「UTF-8 與 Unicode」的陷阱。 UTF-8、UTF-16 和 UTF-32 都是實現 Unicode 標準編碼字元的同等有效且一致的方式。

位元組順序標記 (BOM)

  • 用於位元組順序標記的字元 U+FEFF (UTF-8 EF BB BF) 被命名為零寬度無中斷空格。
  • Unicode 純文字的 UTF-16 和 UTF-32 編碼形式對將資料寫入檔案時所使用的位元組順序敏感。
  • 辨識a開頭的位元組序列 資料流可以視為資料流正在使用 UTF-8 編碼方案的近乎確定的指示。

簡而言之,在CSV 字串之前添加零寬度不間斷空格將強制Excel 應用UTF-8 編碼而不是1252:西歐(Windows) 或Excel 在出現U+FEFF 字元時選擇的其他編碼未提供。

我將在本系列的下一篇文章中展示使用零寬度不間斷空格來產生 CSV 檔案和不使用零寬度不間斷空格的 CSV 檔案之間的差異...

以上是將 JSON 匯出為 CSV:關於 CSV 和 Unicode 的說明的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn