你能将CR/LF编码成CSV文件吗?

And*_*ndy 59 csv

以某种方式将CR/LF字符编码为CSV文件是否可能/合法?

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

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

Ken*_*art 71

是的,你需要用引号括起来:

"some value
over two lines",some other value
Run Code Online (Sandbox Code Playgroud)

该文档中,这是普遍接受的CSV标准:

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

  • 不是普遍接受的格式RFC 4180吗?https://en.wikipedia.org/wiki/Comma-separated_values (4认同)
  • @ jpmc26确实,我只是想鼓励OP将访问者发送到官方RFC,而不是声称这个其他网站是'普遍接受的CSV标准' (4认同)
  • 维基百科文章还说“ ...(但是,许多CSV实现不支持嵌入式换行符)。” (2认同)

Shu*_*oUk 13

csv最常见的变种是excel兼容的,只要字段被双引号包围,就可以允许嵌入的换行符.

foo,bar,"blah blah
more blah blah",baz
Run Code Online (Sandbox Code Playgroud)

要么

foo,bar,"blah blah
more blah blah"
Run Code Online (Sandbox Code Playgroud)

要么

"blah blah
more blah blah",baz
Run Code Online (Sandbox Code Playgroud)

都是有效的.此机制还允许嵌入逗号.

在没有嵌入新行(或逗号)的文本字段周围使用引号也很好.如果文本本身包含双引号,那么逃避它的机制就是将两个放在一起,例如.

foo,bar,"this person said ""blah blah 
more blah blah""",baz
Run Code Online (Sandbox Code Playgroud)

编写正确处理此问题的csv阅读器可能会非常棘手(特别是如果您依赖正则表达式).


小智 8

这里提到了CSV的标准.我有兴趣了解更多相关信息 - 我所知道的唯一标准是

  • 是的,您链接到的 RFC 是最终标准。它提到将 CRLF 放在双引号内以逃避它。不幸的是,你关于 excel 接受的任何内容的观点都是有效的......这是 MS 试图颠覆标准的另一个例子。 (2认同)
  • RFC是在2005年创建的!Excel已经支持CsV相当长的时间...... (2认同)
  • ShuggyCoUk 这是最后一次更新,它是在此之前很久创建的:https://en.wikipedia.org/wiki/Comma-separated_values (2认同)