Ubuntu 12.04 LTS
Ruby ruby 1.9.3dev (2011-09-23 revision 33323) [i686-linux]
Rails 3.2.9
Following is
from this thread pass the option :quote_char => "|"
CSV.read(filename, :quote_char => "|")
I had a problem with the trademark character that was throwing this error.
The trademark character translates to \"! in UTF-8, so it was the open-ended quotation symbol that was throwing the error. So I did this:
.gsub!("\"!", "")
And then I tried creating my CSV object and it worked fine.
quote_chars = %w(" | ~ ^ & *)
begin
@report = CSV.read(csv_file, headers: :first_row, quote_char: quote_chars.shift)
rescue CSV::MalformedCSVError
quote_chars.empty? ? raise : retry
end
it's not perfect but it works most of the time.
N.B. CSV.parse
takes the same parameters as CSV.read
, so either a file or data from memory can be used