Bug #2766
closedCannot use CSV under windows 7
Description
=begin
I try to use Ruby under my windows 7 notebook. but I find that CSV cannot work. it alway throws " CSV::MalformedCSVError:Unquoted fields do not allow \r or \n(line 1)"
my system is windows 7
ruby 1.9.1p378(2010-01-10 revision 26273)[i386-mingw32]
error messages:
CSV::MalformedCSVError: Unquoted fields do not allow \r or \n (line 1).
from C:/Ruby19/lib/ruby/1.9.1/csv.rb:1857:in `block (2 levels) in shift'
     from C:/Ruby19/lib/ruby/1.9.1/csv.rb:1847:in `gsub!'
     from C:/Ruby19/lib/ruby/1.9.1/csv.rb:1847:in `block in shift'
     from C:/Ruby19/lib/ruby/1.9.1/csv.rb:1809:in `loop'
     from C:/Ruby19/lib/ruby/1.9.1/csv.rb:1809:in `shift'
     from C:/Ruby19/lib/ruby/1.9.1/csv.rb:1754:in `each'
     from (irb):42
     from C:/Ruby19/bin/irb:12:in `<main>'
following is my code:
require 'CSV'
csvreader=CSV.open("D:\tmp\march.csv","r")
csvreader.each do |row|
caller=row[0]
callee=row[1]
puts caller, callee
end
csvreader.close
following is part of my data, we have ten thousand lines of this kind of data
59855500	13716050909	113	0.22
59855500	15801306235	9	0.22
59855500	13716050909	26	0.22
59855500	13581783508	15	0.22
59855500	13661273974	14	0.22
59855500	80101168	7	0.22
59855500	13716050909	25	0.22
59855500	13716050909	18	0.22
59855500	13716050909	71	0.22
59855500	13520988518	35	0.22
59855500	13716050909	83	0.22
59855500	13641324296	19	0.22
59855500	13716590624	9	0.22
59855500	95555	13	0.22
=end
        
          
          Updated by naruse (Yui NARUSE) over 15 years ago
          
          
        
        
      
      - Status changed from Open to Assigned
 - Assignee set to JEG2 (James Gray)
 
=begin
=end
        
          
          Updated by JEG2 (James Gray) over 15 years ago
          
          
        
        
      
      - Category set to lib
 - Status changed from Assigned to Rejected
 
=begin
I assume CSV's auto line ending detection is failing on you data for some reason.  A likely cause could be fields that contain line endings different from those used to end lines.  You should be able to solve this by setting the :row_sep manually.  I would try:
CSV.open(…, :row_sep => "\r\n")
If that doesn't work, try a \n alone.
=end