可以将CR / LF编码为CSV文件吗?


71

是否可能/合法地将CR / LF字符编码为CSV文件?

(作为CSV标准的一部分?)

如果是这样,我应该如何编码CR / LF?

Answers:


86

是的,您需要用引号引起来:

"some value
over two lines",some other value

该文档,这是公认的CSV标准:

包含嵌入式换行符的字段必须用双引号引起来


6
通用格式RFC 4180不是吗?en.wikipedia.org/wiki/Comma-separated_values
HaveAGuess

2
维基百科文章还说:“ ...(但是,许多CSV实现不支持嵌入式换行符)。”
dansalmo

1
@HaveAGuess RFC 4180在这里说了同样的话。第2页,第6项
。– jpmc26,2015年

5
@ jpmc26实际上,我只是在尝试鼓励OP将访问者发送到官方RFC,而不是声称此其他站点是“普遍接受的CSV标准”
HaveAGuess

即使在添加双引号之后,数据也会插入到新单元格中。
vikas etagi'5

17

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阅读器可能会很棘手(特别是如果您依赖于正则表达式)。


1
如果我想嵌入报价该怎么办?
towc

8

这里已经提到了CSV标准。我想对此有所了解-我知道的唯一标准是


1
是的,您链接到的RFC是权威标准。它提到将CRLF放在双引号中以使其逃逸。不幸的是,您关于excel接受的观点是正确的……MS试图颠覆标准的另一种情况。
rmeador

2
RFC创建于2005年!Excel支持CsV的时间要长得多……
ShuggyCoUk,2009年

1
ShuggyCoUk是最后一次更新,它在此之前就创建了:en.wikipedia.org/wiki/Comma-separated_values
HaveAGuess 2015年

0

我不认为它是标准的一部分(如果有的话),但是您可以使用标准的C样式转义,即编码\ r \ n。

但是请记住,如果这样做,您还应该对转义字符进行编码-即\产生\解码后的\。


4
csv不使用C样式转义

1
一些csv应用程序支持此格式。令人遗憾的是,csv定义标准很差。会说话的Excel csv是(实用上)最好的,但事实并非如此
ShuggyCoUk 2009年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.