CSV字段中报价前的空格

CSV字段中报价前的空格,csv,Csv,根据CSV规范(),空格被视为字段的一部分,不应忽略。显然,如果字段包含双引号,则应在引号内保留空格 我的问题是,双引号之外的空格呢?我能看到这种情况发生的唯一方法是生成CSV的工具没有正确执行 示例:1、“2”、3 是否应包括“2”前后的空格?该单元格无效-要正确编码该行,应: one," ""two"" ",three 双引号也必须转义(作为双引号),因为它们用作转义序列。如果您不想在two周围保留引号,那么从技术上讲,该行有两件事是无效的—(1)引号前后的空格,以及(2)单元格周围有引号

根据CSV规范(),
空格被视为字段的一部分,不应忽略。显然,如果字段包含双引号,则应在引号内保留空格

我的问题是,双引号之外的空格呢?我能看到这种情况发生的唯一方法是生成CSV的工具没有正确执行

示例:
1、“2”、3


是否应包括“2”前后的空格?

该单元格无效-要正确编码该行,应:

one," ""two"" ",three
双引号也必须转义(作为双引号),因为它们用作转义序列。如果您不想在
two
周围保留引号,那么从技术上讲,该行有两件事是无效的—(1)引号前后的空格,以及(2)单元格周围有引号,但无需转义。CSV要求,如果单元格内容中有逗号或引号,则单元格周围只能有引号


如果我是在你的情况下,我会犯宽大的错误。

我使用大容量插入和BCP格式文件来处理这个问题,这很难解释引号和逗号分隔。如果可能会有变化,比如说使用
,“
分隔符,我们使用了最低的常用分隔符,所以在您的示例中使用逗号,然后去掉了不需要的东西,比如所有双引号


但也可能是源数据仅以逗号分隔,这是该字段的实际内容。无论哪种方式,我都会在加载该字段时以任何合适的方法将引号去掉。

我的意思是
1,“2”,3
,而不是
1”,“2”,三个
。所以,它写得不恰当。是否应该假设字段写得不正确,字段上没有引号?或者应该假设引号是引号字段的一部分,并且在前面和/或后面有空格?我理解,请参阅我的编辑。这是CSV规范的一个问题-有太多的变体,我们经常在编写CSV的人和解析CSV的人之间遇到问题。(然后我有另一个大问题,就是您通常必须从头开始创建解析器)是的,我就是这么做的。不过我是开源的,所以其他人可以使用它。它也可以通过NuGet获得。