Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Invalid char between encapsulated token and delimiter in Apache Commons CSV library

I am getting the following error while parsing the CSV file using the Apache Commons CSV library.

Exception in thread "main" java.io.IOException: (line 2) invalid char between encapsulated token and delimiter  at org.apache.commons.csv.Lexer.parseEncapsulatedToken(Lexer.java:275) at org.apache.commons.csv.Lexer.nextToken(Lexer.java:152) at org.apache.commons.csv.CSVParser.nextRecord(CSVParser.java:450) at org.apache.commons.csv.CSVParser.getRecords(CSVParser.java:327) at parse.csv.file.CSVFileParser.main(CSVFileParser.java:29) 

What's the meaning of this error ?

like image 397
Santhosh Sridhar Avatar asked Nov 04 '14 07:11

Santhosh Sridhar


1 Answers

We ran into this issue when we had embedded quote in our data.

0,"020"1,"BS:5252525  ORDER:99999"4 

Solution applied was CSVFormat csvFileFormat = CSVFormat.DEFAULT.withQuote(null);

@Cuga tip helped us to resolve. Thanks @Cuga

Full code is

    public static void main(String[] args) throws IOException {     FileReader fileReader = null;     CSVFormat csvFileFormat = CSVFormat.DEFAULT.withQuote(null);     String fileName = "test.csv";      fileReader = new FileReader(fileName);     CSVParser csvFileParser = new CSVParser(fileReader, csvFileFormat);      List<CSVRecord> csvRecords = csvFileParser.getRecords();      for (CSVRecord csvRecord : csvRecords) {         System.out.println(csvRecord);     }     csvFileParser.close(); } 

Result is

CSVRecord [comment=null, mapping=null, recordNumber=1, values=[0, "020"1, "BS:5252525  ORDER:99999"4]] 
like image 114
Anand Avatar answered Oct 05 '22 22:10

Anand