我使用C代码编写了自己的CSV读写程序,用于将记录存储在ODBC数据库中的字符列中。不幸的是,我发现我的实现有许多边缘情况,而且我得出结论,我的问题在于我没有严格定义CSV的规则。我已经阅读了RFC4180,但它似乎不完整,也不能解决歧义。
例如,""应该被视为空标记还是双引号?引号从外到内匹配还是从左到右匹配?对于具有不匹配单引号的输入字符串该怎么处理?当我有嵌套标记时,真正的麻烦开始了,这会使转义引号字符加倍。
我真正需要的是一个明确的CSV标准,以便我可以在代码中实现它。每次我觉得我已经解决了每个角落的问题,我又会发现另一个问题。我相信这个问题已经被比我更聪明的人反复思考和解决了许多次,有没有人编写过一个严格的CSV定义,可以让我在代码中实现?我意识到C语言在这里不是理想的语言,但在这个阶段我选择不了编译器;我也无法使用第三方库(除非它与C-90编译)。 Boost不是选项,因为我的编译器不支持C ++。我曾考虑放弃CSV而改用XML,但对于将几个标记存储在256字符数据库记录中来说,这似乎过于复杂了。有人制定了一个明确的CSV规范吗?