[ 
https://issues.apache.org/jira/browse/CSV-200?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16971230#comment-16971230
 ] 

Prokudin Mikhail commented on CSV-200:
--------------------------------------

I think it's not workaround. It's mutually exclusive approaches.

If you use quotes, you configure CSVFormat to escape special characters in 
value by wrapping value in quoets. If you use escape character, you configure 
CSVFormat to escape special characters by specified value.

Same _val,ue_ witn comma delimeter can be writen by both approaches:

1) "val,ue"

2) val\,ue with escape \ character

Could be good idea to change CSVFormat.validate() method to throw Exception 
when specified both parameters - Quotes and Escape character for except same 
conflict situations, but INFORMIX_UNLOAD format use both parameters. 

> CSVFormat cannot read its own output if input contain escape character 
> followed by quote character
> --------------------------------------------------------------------------------------------------
>
>                 Key: CSV-200
>                 URL: https://issues.apache.org/jira/browse/CSV-200
>             Project: Commons CSV
>          Issue Type: Bug
>          Components: Parser
>    Affects Versions: 1.4
>            Reporter: Vladimir Eatwell
>            Priority: Major
>
> I can format CSV using CSVFormat that is subsequently unparsable by 
> CSVFormat, the test below illustrates the failure:
> {code}
> import org.apache.commons.csv.CSVFormat;
> import org.apache.commons.csv.CSVRecord;
> import org.apache.commons.csv.QuoteMode;
> import org.junit.Test;
> import java.io.StringReader;
> import java.util.List;
> public class CSVFormatTest {
>     @Test
>     public void parseFailure() throws Exception {
>         CSVFormat formatter = CSVFormat.DEFAULT;
>         formatter = formatter.withDelimiter(',');
>         formatter = formatter.withQuote('*');
>         formatter = formatter.withEscape('/');
>         formatter = formatter.withNullString("NULL");
>         formatter = formatter.withIgnoreSurroundingSpaces(true);
>         formatter = formatter.withQuoteMode(QuoteMode.MINIMAL);
>         String formatted = formatter.format("bob/*", "token");
>         List<CSVRecord> parsed = formatter.parse(new 
> StringReader(formatted)).getRecords();
>         for (CSVRecord record : parsed) {
>             System.out.println(record.size());
>         }
>     }
> }
> {code}



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to