2009-02-19 31 views

回答

41

是的,你需要在報價包:

"some value 
over two lines",some other value 

this document,這是人們普遍接受的CSV標準:

包含嵌入式 換行符必須surounded場通過 雙引號

+1

心不是普遍接受的格式RFC 4180? https://en.wikipedia.org/wiki/Comma-separated_values – HaveAGuess 2015-08-10 08:57:51

+0

該維基百科文章還說「...(但是,許多CSV實現不支持嵌入式換行符)」。 – dansalmo 2016-11-28 21:24:49

+0

肯特,根據我的問題在這裏http://stackoverflow.com/questions/43943003/encoding-csv-clrf-into-newlines/43943173?noredirect=1#comment74919143_43943173,當你說雙引號應該換行符,它是否包裝'\ n \ r`編碼,也就是``Customer \ r \ n「」Hallo \ r \ n「」hola \ r \ n「」\ r \ n「」「`,或者像外面的``」客戶爲 「\ r \ n」 喂 「\ r \ n」 HOLA 「\ r \ n」 「」`。在Google表格和數字中嘗試這兩種方式似乎並沒有在單元格中進行多行工作 – Growler 2017-05-12 17:49:27

1

我不認爲這是標準的一部分(如果有甚至是一個),但是你可以使用標準的C風格轉義,即編碼\ r \ n。

但請記住,如果你這樣做,你還應該編碼轉義字符 - 即解碼後的\ yield \。

10

csv最常見的變體是excel兼容的變體,只要字段被雙引號包圍就可以嵌入換行符。

foo,bar,"blah blah 
more blah blah",baz 

foo,bar,"blah blah 
more blah blah" 

"blah blah 
more blah blah",baz 

都是有效的。該機制還允許嵌入逗號。

圍繞未嵌入新行(或逗號)的文本字段使用引號也很好。如果文本本身包含一個雙引號,那麼轉義它的機制就是將兩個文本放在一起。

foo,bar,"this person said ""blah blah 
more blah blah""",baz 

寫一個正確處理這個問題的csv閱讀器可能會很棘手(尤其是如果你依賴正則表達式)。

相關問題