我用 C 编写了自己的 CSV 读取器/写入器,以将记录存储在 ODBC 数据库的字符列中。不幸的是,我发现了许多影响我的实现的边缘案例,我得出的结论是我的问题是我没有严格定义 CSV 的规则。我已经阅读了 RFC4180,但它似乎不完整并且不能解决歧义。
例如,应该将 "" 视为空标记还是双引号?引号是由外向内匹配还是从左到右匹配?如何处理具有不匹配单引号的输入字符串?当我嵌套了标记时,真正的混乱开始了,这使转义的引号字符加倍。
我真正需要的是可以在代码中实现的明确的 CSV 标准。每次我觉得我已经钉牢了每个角落的情况时,我都会找到另一个。我相信这个问题已经被我的优秀头脑多次考虑和解决了,有没有人写过我可以在代码中实现的 CSV 的严格定义?我意识到 C 在这里不是理想的语言,但在这个阶段我没有选择编译器;我也不能使用第三方库(除非它用 C-90 编译)。Boost 不是一个选项,因为我的编译器不支持 C++。我曾考虑为 XML 放弃 CSV,但在 256 个字符的数据库记录中存储一些标记似乎有点过头了。有人制定了明确的 CSV 规范吗?