instance method Encoding::InvalidByteSequenceError#incomplete_input?

incomplete_input? -> bool[permalink][rdoc]

エラー発生時に入力文字列が不足している場合に真を返します。

つまり、マルチバイト文字列の途中で文字列が終わっている場合に真を返します。これは後続の入力を追加することでエラーが解消する可能性があることを意味します。

ec = Encoding::Converter.new("EUC-JP", "ISO-8859-1")

begin
  ec.convert("abc\xA1z")
rescue Encoding::InvalidByteSequenceError
  p $!
  #=> #<Encoding::InvalidByteSequenceError: "\xA1" followed by "z" on EUC-JP>
  p $!.incomplete_input?    #=> false
end

begin
  ec.convert("abc\xA1")
  ec.finish
rescue Encoding::InvalidByteSequenceError
  p $! #=> #<Encoding::InvalidByteSequenceError: incomplete "\xA1" on EUC-JP>
  p $!.incomplete_input?    #=> true
end