Object with  method doesn't work as String#encode's fallback
String#encode document says fallback can be a Hash, a Proc, a Method or an object which has
Sets the replacement string by the given object for undefined character. The object should be a Hash, a Proc, a Method, or an object which has  method
But actually an object with
 does not work.
class C def (str) '!' end end str = "\u00b7\u2014" p str.encoding # => #<Encoding:UTF-8> # It works p str.encode("Windows-31J", fallback: C.new.method(:)) # => "!!" # It does not work p str.encode("Windows-31J", fallback: C.new) # => U+00B7 from UTF-8 to Windows-31J (Encoding::UndefinedConversionError)