2009-02-19 53 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阅读器可能会很棘手(尤其是如果你依赖正则表达式)。