Actions
Bug #16628
closedCSV.new する時にGzipReaderを渡すとCSV::Parser::InvalidEncodingが出る場合がある
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系では発生しません。
Updated by namayaki3 (山中 裕樹) about 5 years 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) about 5 years ago
- Status changed from Open to Third Party's Issue
- Assignee set to kou (Kouhei Sutou)
https://github.com/ruby/csv/issues/new に報告してもらえますか?再現するCSVファイルも提供してもらえると助かります。
Updated by namayaki3 (山中 裕樹) about 5 years ago
さっそくの返信ありがとうございます。
ISSUE作りました。英語の方が良ければ英語に直します。。
また、CSVファイルは秘匿情報が含まれているため、いますぐそのままお渡しできないです・・・申し訳ありません。
ファイル加工して共有できるような形にできればと思います。
Actions
Like0
Like0Like0Like0