Ruby 4.0 リファレンスマニュアル

class CSV::InvalidEncodingError

[edit]

要約

不正なバイト列を含む 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

インスタンスメソッド

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