Project

General

Profile

Bug #16628

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

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

Status:
Third Party's Issue
Priority:
Normal
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系では発生しません。

#1

Updated by namayaki3 (山中 裕樹) 4 months ago

  • ruby -v changed from 2.6.5 to ruby 2.6.5p114 (2019-10-01 revision 67812) [x86_64-darwin18]

Updated by kou (Kouhei Sutou) 4 months ago

  • Assignee set to kou (Kouhei Sutou)
  • Status changed from Open to Third Party's Issue

https://github.com/ruby/csv/issues/new に報告してもらえますか?再現するCSVファイルも提供してもらえると助かります。

Updated by namayaki3 (山中 裕樹) 4 months ago

さっそくの返信ありがとうございます。

ISSUE作りました。英語の方が良ければ英語に直します。。
また、CSVファイルは秘匿情報が含まれているため、いますぐそのままお渡しできないです・・・申し訳ありません。
ファイル加工して共有できるような形にできればと思います。

Also available in: Atom PDF