包含逗號、引號和換行的 CSV 儲存格
兩筆記錄,超過兩行。將逗號和換行保留在儲存格內。
CSV 儲存格可以包含逗號、引號或換行符號。這並不表示檔案損壞,而是該儲存格需要加引號,且計算文字行數不一定能告訴你它包含多少筆記錄。
下載 範例 CSV。打開 CSV、JSON 與 YAML 轉換器 並上傳它。該檔案有兩筆記錄,儘管其中一個說明跨了兩行:
name,caption
"Lee, Sam","First line
Second line"
Mina,"She said ""hello""."
在分割列之前先讀取引號
"Lee, Sam" 中的逗號屬於姓名。First line 與 Second line 之間的換行屬於說明。因為它們在雙引號內,所以都不是新欄位或新記錄的開始。
在加引號的儲存格內,連續兩個雙引號代表一個引號。因此 "She said ""hello""." 會變成文字 She said "hello".。外層引號與內部成對的雙引號是 CSV 語法,不是要保留在值裡的額外字元。這些規則詳見 RFC 4180 的 CSV 格式說明。
直接在每個逗號或換行符號分割原始文字會忽略這些差異。移除所有引號也不是修復方法,因為會把姓名內的逗號當成欄位分隔符。
轉換範例並檢查其值
- 上傳範例檔,或將上方 CSV 貼到輸入編輯器。
- 設定 從 為 CSV,到 為 JSON。
- 在 選項 中,保持 第一列包含標題 開啟,偵測 CSV 中的數字和布林值 關閉。若自動偵測錯誤,將 CSV 分隔符號 設為 逗號。
- 檢查 程式碼 結果。應包含兩個物件,每個都有姓名和說明。表格 可快速檢視兩列兩欄。
下載的範例使用 CRLF 換行符號,包括第一個說明內的換行。其 JSON 輸出包含:
[
{
"name": "Lee, Sam",
"caption": "First line\r\nSecond line"
},
{
"name": "Mina",
"caption": "She said \"hello\"."
}
]
JSON 會將回車與換行顯示為跳脫序列,但它們仍代表字串中的換行。如果你從本頁貼上範例而非上傳檔案,剪貼簿可能只提供 LF 換行;看到 \n 而非 \r\n 是正常的。下載 檢查過的 JSON 輸出 以取得 CRLF 版本。
測試來回轉換
選擇 將結果作為輸入,將 JSON 轉回 CSV。保持所有欄位選取。匯出的 CSV 會再次為逗號、多行說明與引號加引號。轉回 JSON 後,我們檢查兩筆記錄與所有欄位值都被保留。
這是資料比較,不保證每個 CSV 檔案都能逐位元組完全還原。引號、結尾換行與分隔符可能寫法不同。工具預設也會保護類似試算表公式的值,可能會故意加上前導單引號。我們的範例沒有這類值;開啟不信任的試算表匯出時,請保持此保護開啟。
逗號確實是錯誤時
錯誤範例 在姓名中未加引號的逗號,導致標題兩欄但資料列有三欄,轉換器因此拒絕。將整個姓名用 "Lee, Sam" 加引號即可修正,請勿刪除姓名部分。
結果記錄 包含 2026 年 10 月 26 日的預期值、來回轉換檢查與拒絕輸入結果。它測試的是轉換器的解析器,不是每個試算表應用程式的 CSV 匯入規則。