Thank you for reference to CSV standard, Jan.

There is no problem anymore :)

------ Исходное сообщение ------
От: "Jan Høydahl" <[email protected]>
Кому: "Commons Users List" <[email protected]>; "Андрей" <[email protected]>
Отправлено: 11.11.2015 11:58:14
Тема: Re: [csv] Two qoute characters in a row cause error

Which program generated your CSV file?
Why do you expect it parsed to no quotes at all?

According to https://tools.ietf.org/html/rfc4180#section-2 #2.5-7

5. Each field may or may not be enclosed in double quotes (however some programs, such as Microsoft Excel, do not use double quotes
        at all).  If fields are not enclosed with double quotes, then
        double quotes may not appear inside the fields.  For example:

        "aaa","bbb","ccc" CRLF
        zzz,yyy,xxx

6. Fields containing line breaks (CRLF), double quotes, and commas
        should be enclosed in double-quotes.  For example:

        "aaa","b CRLF
        bb","ccc" CRLF
        zzz,yyy,xxx

7. If double-quotes are used to enclose fields, then a double-quote
        appearing inside a field must be escaped by preceding it with
        another double quote.  For example:

        "aaa","b""bb","ccc"

According to this, both of these are valid

2120000,1596,4240000,9600,true
2120000,"1596",4240000,9600,true

But your line seems to suggest that you want to escape a literal quote as a double-quote, but then the field must be enclosed in double quotes (have not tested this though).

2120000,""”1596""",4240000,9600,true

--
Jan Høydahl, search solution architect
Cominvent AS - www.cominvent.com

 11. nov. 2015 kl. 08.44 skrev Андрей <[email protected]>:

 Hello everyone,

I've recently noticed a some bug, I suppose. I have the following csv file (2 lines):

 DATA_SERVICE_ID,""DATA_SPEED_APID"",COMPONENT_ID,SPEED,SYNCHRONOUS
 2120000,""1596"",4240000,9600,true

 (The first line is a header)

 I'm trying to parse it via this configuration:
CSVFormat format = CSVFormat.newFormat(',').withQuote('"').withHeader();

 Expected result: all headers and values without quotes
Actual result: Exception in thread "main" java.io.IOException: (line 1) 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:498)
at org.apache.commons.csv.CSVParser.initializeHeader(CSVParser.java:386)
 at org.apache.commons.csv.CSVParser.<init>(CSVParser.java:283)
 at org.apache.commons.csv.CSVParser.<init>(CSVParser.java:251)
 at Runner.main(Runner.java:20)
 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
 at java.lang.reflect.Method.invoke(Method.java:497)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:140)

 Thanks ahead for any answers.

 Kulikov Andrey



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to