在3.9版中,除了csvparser之外,OpenCSV还引入了一个解析器。CSVReader的基础是解析器。这个新的解析器称为rfc4180parser。AS
official documentation
状态
rfc4180为所有关键问题定义了一个标准,即如何精确地格式化csv文件…
csvparser和rfc4180parser之间的主要区别在于csvparser使用转义字符表示“不可打印”字符,而rfc4180规范将第一个和最后一个引号之间的所有字符都视为福音(双引号除外,该双引号由双引号转义)。
所以尝试使用Opencsv3.9+和rfc4180解析器。它对我有用
def parser = new RFC4180ParserBuilder().build()
def reader = new CSVReaderBuilder(new FileReader(filename)).withCSVParser(parser).build();
println reader.readNext()
输出:
[value1, domain\user, value2]
如果出于某种原因您不能使用3.9及更高版本,您可以设置旧的解析器,以便转义字符是其他字符而不是反斜杠。但在这种情况下,如果原始文件的创建者根据
official documentation
…有时字段本身的数据中包含分隔符,因此需要引号字符。这些引用字符也可以包含在数据中,因此需要一个转义字符…
所以我的建议是使用3.9+版和rfc4180解析器