要約
不正なバイト列を含む CSV をパースしようとしたときに発生する例外です。
入力のエンコーディングとして正しくないバイト列が見つかった場合に発生します。CSV::MalformedCSVError のサブクラスなので、CSV::MalformedCSVError を rescue しているコードでも捕捉できます。
require "csv"
begin
CSV.parse("a,b\n\xFF,1\n")
rescue CSV::MalformedCSVError => e
p e.class # => CSV::InvalidEncodingError
p e.message # => "Invalid byte sequence in UTF-8 in line 2."
end
目次
継承しているメソッド
- Exceptionから継承している特異メソッド
- CSV::MalformedCSVErrorから継承しているメソッド
- Exceptionから継承しているメソッド
特異メソッド
new(encoding, line_number) -> CSV::InvalidEncodingErrorRuby 3.3 から[permalink][rdoc][edit]-
例外オブジェクトを生成して返します。
例外のメッセージは
"Invalid byte sequence in #{encoding} in line #{line_number}."になります。encodingは CSV::InvalidEncodingError#encoding の戻り値に、line_numberは CSV::MalformedCSVError#line_number の戻り値になります。- [PARAM]
encoding: - 入力のエンコーディングを表す Encoding オブジェクトを指定します。
- [PARAM]
line_number: - 不正なバイト列が見つかった行の行番号を指定します。
require "csv" e = CSV::InvalidEncodingError.new(Encoding::UTF_8, 2) p e.message # => "Invalid byte sequence in UTF-8 in line 2." p e.encoding # => #<Encoding:UTF-8> p e.line_number # => 2 - [PARAM]
インスタンスメソッド
encoding -> EncodingRuby 3.3 から[permalink][rdoc][edit]-
パースしようとした入力のエンコーディングを返します。
例require "csv" begin CSV.parse("a,b\n\x81,1\n".force_encoding("Shift_JIS")) rescue CSV::InvalidEncodingError => e p e.encoding # => #<Encoding:Shift_JIS> p e.lineno # => 2 end