使用CsvHelper读取TSV数据时如何保留未转义双引号
解决CsvHelper读取带未转义双引号的TSV数据并保留引号的方案
关键配置调整
要让CsvHelper正确读取并保留未转义的双引号,需调整两个核心配置:
- 修正转义字符写法:你当前配置里的
Delimiter = "/t"和NewLine = "/r/n"是错误的,C#中制表符和回车换行的转义字符为反斜杠,应改为"\t"和"\r\n"。 - 禁用坏数据检测:设置
BadDataFound = null,让CsvHelper不再把字段内未转义的双引号判定为无效数据,从而完整保留原始内容。
修改后的完整配置
new CsvConfiguration(CultureInfo.InvariantCulture) { HasHeaderRecord = true, Delimiter = "\t", // 修正为正确的制表符转义 NewLine = "\r\n", // 修正为正确的换行符转义 IgnoreBlankLines = true, MissingFieldFound = null, HeaderValidated = null, CacheFields = true, PrepareHeaderForMatch = args => args.Header.Trim(), TrimOptions = TrimOptions.Trim, LineBreakInQuotedFieldIsBadData = false, BadDataFound = null // 关键:忽略未转义引号的坏数据判定 };
方案说明
CsvHelper默认会将字段内未转义的双引号识别为格式错误的坏数据,触发BadDataFound回调。将BadDataFound设为null后,工具会跳过这类格式校验,直接按原始内容读取字段值,最终就能完整保留Value "1"这类带未转义引号的内容。
验证效果
使用上述配置读取你的示例TSV数据后,各字段值会被正确读取为:
- Column1:
Value "1" - Column2:
Value "2" - Column3:
Value "3"
内容的提问来源于stack exchange,提问作者Pawel
相关产品推荐
相关产品推荐

