Project

General

Profile

Actions

Bug #16628

closed

CSV.new する時にGzipReaderを渡すとCSV::Parser::InvalidEncodingが出る場合がある

Added by namayaki3 (山中 裕樹) about 4 years ago. Updated about 4 years ago.

Status:
Third Party's Issue
Target version:
-
ruby -v:
ruby 2.6.5p114 (2019-10-01 revision 67812) [x86_64-darwin18]
[ruby-core:97132]

Description

バージョン

ruby 2.6.5

現象

以下のようにCSV.newする時にGZipReaderを渡すとCSV::Parser::InvalidEncodingが出てエラーになります。

コード

gz = Zlib::GzipReader.new(File.open("file/to/path")
CSV.new(gz).each_with_index do |d,i|
    ~~~ 略 ~~~~
end

エラーログ

.rbenv/versions/2.6.5/lib/ruby/2.6.0/csv/parser.rb:314:in `rescue in parse': Invalid byte sequence in UTF-8 in line 78512. (CSV::MalformedCSVError)

考えられる要因

csv/parser.rb の202行目でinput.getsする時にchunksizeを指定していますが、この値によって、chunkが変なところで切られているように見えます。
それによって、utf8のバリデーションが失敗し、上記エラーが出ているように見えます。

ruby 2.5系では発生しません。

Actions

Also available in: Atom PDF

Like0
Like0Like0Like0