Warum erhalte ich einen Encoding :: CompatibilityError mit #inspect?

Der folgende Code funktioniert problemlos:

#encoding: utf-8
class Text
  def initialize(txt)
    @txt = txt
  end
  def inspect
    "<Text: %s>" % @txt
  end
end

p Text.new('Hello World')

Aber wenn ich es versuchep Text.new('Hä, was soll das?') Ich erhalte einen Encoding :: CompatibilityError:

inspect_with_umlaut.rb:26:in `p': inspected result must be ASCII only or use the default external encoding (Encoding::CompatibilityError)
  from inspect_with_umlaut.rb:26:in `<main>'

Warum das

Und noch wichtiger: Wie kann ich das vermeiden?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage