in reply to CSV_XS ERROR: 2027 - EIQ - Quoted field not terminated @ pos 408

None of you is showing how the new () is called (except graff, who passes no arguments).

The OP explicitely said that it had a lot of non-ASCII characters in the data. If - and only if - that data is valid UTF-8, Text::CSV_XS converts the fields to UTF-8, and accepts it as if binary => 1 was passed to the constructor.

    my $csv = Text::CSV_XS->new ({ binary => 1, auto_diag => 1 });

is with recent versions by far the safest way to instantiate $csv.

Another problem might be line endings. Unless you specify exactly what you have, recent versions allow all of \n, \r, and \r\n fully automatic. If you however pass something else, and the line ending do not match, you're likely to end up with very long lines.

What csv2xls.pl are you talking about? Text::CSV_XS comes with csv2xls in it's examples/ folder. Note that my version does not have a .pl extension.


Enjoy, Have FUN! H.Merijn

Replies are listed 'Best First'.
Re^2: CSV_XS ERROR: 2027 - EIQ - Quoted field not terminated @ pos 408
by Anonymous Monk on May 22, 2010 at 14:34 UTC
    I downloaded your csv2xls and changed the last line of my snippet to
    `perl.exe ./csv2xls -u csv_out.csv`;
    Same error:
    There are 741 rows # CSV_XS ERROR: 2027 - EIQ - Quoted field not terminated @ pos 408 2027EIQ - Quoted field not terminated408 at ./csv2xls line 132, <> lin +e 1.
    Note that, with the said offending line in, the csv_out gets cut down to about 1/10 the size.
    Thanks for your efforts, by the way. This has been dogging me for days.
      I had also changed to
      my $csv = Text::CSV_XS->new ({ binary => 1, auto_diag => 1 }) or die "Cannot use CSV: ".Text::CSV->error_diag ();
      Thanks
        graff suggested how I can get the offending data. Found it! I got it down to 2 lines.
        "vv1","vv2","vv3","vv4","vv5","vv6","vv7","vv8","vv9","vv10","vv11" 251,"a"," Hardware .","Hardware ."," Hardware ","d",,,,,

        Please see if it gives you the error below, too.
        C:\temp>a01.pl There are 1 rows # CSV_XS ERROR: 2027 - EIQ - Quoted field not terminated @ pos 44 2027EIQ - Quoted field not terminated44 at ./csv2xls line 132, <> line + 1.