You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Jakarta Commons CSV解析CSV时遇IOException异常求助

解决Jakarta Commons CSV解析时出现的"invalid char between encapsulated token and delimiter"异常

你碰到的这个报错,核心原因是CSV字段内的双引号没有遵循标准的转义规则。咱们先拆解下问题所在:

你的示例第二行里,Field1的内容是"Ryan, R"u"bianes"——这里面的R"u部分用了单个双引号,但CSV标准(RFC 4180)明确规定:如果字段里要包含双引号,必须用两个连续的双引号来表示一个实际的双引号。解析器看到这个单个双引号时,会误以为这是当前字段的结束标记,后面的内容就会被当成未被引号包裹的内容,和后续的逗号分隔符冲突,直接抛出异常。

下面给你两个可行的解决方案:

方案1:修正CSV输入文件(推荐,符合标准)

把字段内的单个双引号替换成两个连续的双引号,修正后的第二行应该是这样:

"Ryan, R""u""bianes"," dummy@gmail.com","29445","626","South delhi, Rohini 122001"

用你原来的解析配置就能正常工作,解析后完全能得到你期望的结果:

  • Field1的值:Ryan, R"u"bianes
  • Field5的值:South delhi, Rohini 122001

方案2:调整解析器配置(适用于无法修改输入的场景)

如果实在没办法修改输入文件,你可以给CSVFormat添加转义字符配置,指定用双引号自身来转义:

CSVFormat format = CSVFormat.newFormat(',')
    .withIgnoreEmptyLines()
    .withQuote('"')
    .withEscape('"'); // 让双引号作为转义字符处理

不过要注意,这个配置不符合标准CSV规范,可能会在处理其他标准CSV内容时出问题,所以优先推荐方案1。

内容的提问来源于stack exchange,提问作者Emperor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 06:39:08