{
  "synthetic": true,
  "execution": "Teaching record only; no live integration tested",
  "slug": "csv-multiline-record-boundary",
  "group": "content-data",
  "title": [
    "A line break inside CSV is not necessarily a new record",
    "CSV单元格中的换行，不一定是新记录"
  ],
  "intro": [
    "A product description or project brief can contain a comma, quotation marks and a line break. A supplier who splits the file on every newline can create phantom records even when the text encoding is correct. Commission record-boundary tests separately from UTF-8 and spreadsheet formula checks.",
    "商品描述或项目说明可能含逗号、引号及换行。若供应商按每个换行拆文件，即使编码正确，也会产生假记录。应把记录边界与UTF-8、表格公式安全分别验收。"
  ],
  "facts": [
    [
      "RFC4180 documents quoted fields containing commas, double quotes or line breaks, with doubled quotes inside quoted fields. It is an informational format description and acknowledges implementation differences.",
      "RFC4180描述了含逗号、双引号或换行的带引号字段，以及字段内双引号的双写方式；它是说明性格式文档，也承认实现差异。",
      "https://www.rfc-editor.org/rfc/rfc4180#section-2"
    ]
  ],
  "example": [
    [
      [
        "SKU,description header; A,\"Line1<CRLF>Line2\"",
        "One embedded line break",
        "One data record with two fields; preserve description line break"
      ],
      [
        "SKU、description表头；A,\"第一行<CRLF>第二行\"",
        "字段内一处换行",
        "一条数据、两个字段，保留描述换行"
      ]
    ],
    [
      [
        "B,\"Red, blue\"",
        "Comma inside quoted description",
        "One description field, not two"
      ],
      [
        "B,\"红色, 蓝色\"",
        "引号内逗号",
        "一个描述字段，不是两个"
      ]
    ],
    [
      [
        "C,\"He said \"\"yes\"\"\"",
        "Doubled inner quotes",
        "Decoded description: He said \"yes\""
      ],
      [
        "C,\"他说\"\"可以\"\"\"",
        "内部引号双写",
        "解码描述：他说\"可以\""
      ]
    ],
    [
      [
        "D,\"Unclosed description",
        "Quoted field never closes",
        "Reject with record context; do not guess a repair"
      ],
      [
        "D,\"未闭合描述",
        "字段引号没有结束",
        "带记录上下文拒绝，不猜修复"
      ]
    ]
  ],
  "steps": [
    [
      "Declare delimiter, quote convention, line endings, encoding and header presence. Send the receiving supplier the actual tiny fixture, not a screenshot of spreadsheet cells.",
      "声明分隔符、引号、行尾、编码及有无表头；提供真正的小文件，而非表格截图。"
    ],
    [
      "Parse the fixture as CSV records, compare exact decoded cell strings and verify a stable number of fields. Include the intentionally unclosed row as a separate negative file.",
      "按CSV记录解析，核对精确单元格文字及字段数；把故意未闭合行作为独立失败文件。"
    ],
    [
      "Round-trip accepted records through the target exporter and importer. Check line breaks and quotes again before any production import, with formula safety and missing-value rules assessed separately.",
      "让目标导出及导入往返处理合格记录，再核对换行和引号；公式安全与缺失值规则仍另验。"
    ]
  ],
  "result": [
    "The first record occupies multiple physical lines while remaining one logical row. Counting newline characters is therefore not an import reconciliation. A useful receipt includes logical row count, field count and decoded values, with a clear failure on the malformed file.",
    "首条记录跨多个物理行，却仍是一条逻辑记录，所以数换行不能当导入对账。有效回执须包含逻辑行数、字段数和解码值，并让错误文件明确失败。"
  ],
  "accept": [
    "Require exact cell preservation and a rejected malformed fixture under the chosen dialect. Passing encoding checks alone cannot approve row parsing.",
    "按选定格式精确保留单元格，并拒绝错误文件；编码通过不能代替行解析验收。"
  ],
  "limit": [
    "Synthetic CSV examples; no spreadsheet, customer record or production import is accessed. Dialects outside the declared contract need their own fixtures.",
    "合成CSV例子，未访问表格、客户记录或生产导入；约定以外的格式须另准备案例。"
  ],
  "oldLinks": []
}
