为什么导出的 CSV 多了一个撇号
多出的撇号可能是刻意添加的。看看公式防护会怎样改变导出的数据。
导出 CSV 时开头的撇号可能是故意添加的。当启用 保护 CSV 免受电子表格公式影响 选项时,CozyToolkit 会在某些类似公式的值前加上撇号。该选项默认开启。
例如,文本 =1+1 会变成 '=1+1。这样有助于防止电子表格将该值误判为公式。它也改变了底层数据,因此后续的 CSV 转 JSON 操作会保留这个撇号。
导出四个看似普通的值
下载 示例 JSON,上传到 CSV、JSON 和 YAML 转换器。设置 从 为 JSON,到 为 CSV。打开 选项,保持 保护 CSV 免受电子表格公式影响 选项开启。
示例包含四个带标签的值。在 代码 输出中,导出的字段为:
| 源字符串 | 导出 CSV 字段 | 解析值 |
|---|---|---|
=1+1 |
"'=1+1" |
'=1+1 |
@cozytoolkit |
"'@cozytoolkit" |
'@cozytoolkit |
-12 |
"'-12" |
'-12 |
Ready to share |
Ready to share |
Ready to share |
使用 下载 保存 CSV,或查看 已检查的导出文件。示例使用了无害的算术表达式、一个用户名和一个偏移量,方便观察转换效果。
表格 标签页预览输入记录。用 代码 或下载的 CSV 检查导出时添加的撇号;输入表格不显示这些转义字符串。
CSV 引号的作用不同
外层双引号是 CSV 语法的一部分,CSV 解析器读取字段时会去掉它们。引号内的撇号是字段值的一部分,会被保留。
选择 将结果用作输入,将导出的 CSV 转回 JSON。关闭数字检测后,第一个值变成了 "'=1+1",而不是 "=1+1"。 转回的 JSON 显示了所有四个结果。这是有意的数据变化,不是引号错误。
如果下游系统需要完全相同的原始字符串,请保留源 JSON。不要盲目删除所有开头的撇号:有些可能是原始数据的一部分。
了解此选项检查的内容
转换器使用了 Papa Parse 的 公式转义选项。它会给以 =、+、-、@、制表符或回车符开头的值加前缀。包括无害的值,如用户名和负数字符串;该选项不会判断每个值是否恶意。
这只是有限的导出预防措施,不能保证任何电子表格都能安全打开任何 CSV。当前检查未覆盖所有可能的前缀,比如换行符或全角符号。电子表格导入设置各异,保存后重新打开 CSV 可能改变转义方式。OWASP 解释了这些 CSV 注入的限制。
对于不可信数据,应通过电子表格的文本导入控件导入,明确将相关列设为文本,并检查结果。确认接收文件的应用和版本的行为。
将精确数据导出与电子表格导出分开保存
当可信的机器对机器流程需要完全相同的原始字符串时,关闭保护选项可以避免添加撇号。请将该版本与供人用电子表格打开的文件分开保存。不需要表格文件时,JSON 通常是更清晰的交接格式。
我们的 结果记录 于 2026 年 11 月 2 日使用实际转换器,比较了保护开启和关闭的情况。它确认了导出文本和解析器读取的值。并未声称测试过 Excel、LibreOffice 或其他电子表格,也不保证公式转义能让不可信文件绝对安全。