Bug #5920
closedEncoding.compatible? gives inconsistent results with String vs Encoding arguments
Description
Is this a bug? If I pass two strings that have the same encodings as the Encoding instances I pass directly, I get different results.
$ irb
ruby-1.9.3-p0 :001 > Encoding.compatible?(Encoding::EUC_JP, Encoding::UTF_8)
=> nil
ruby-1.9.3-p0 :002 > a = "abc".encode "euc-jp"
=> "abc"
ruby-1.9.3-p0 :003 > a.encoding
=> #Encoding:EUC-JP
ruby-1.9.3-p0 :004 > a.valid_encoding?
=> true
ruby-1.9.3-p0 :005 > b = "def".encode "utf-8"
=> "def"
ruby-1.9.3-p0 :006 > b.encoding
=> #Encoding:UTF-8
ruby-1.9.3-p0 :007 > b.valid_encoding?
=> true
ruby-1.9.3-p0 :008 > Encoding.compatible?(a, b)
=> #Encoding:EUC-JP
ruby-1.9.3-p0 :009 > a << b
=> "abcdef"
ruby-1.9.3-p0 :010 > a.encoding
=> #Encoding:EUC-JP
ruby-1.9.3-p0 :011 > a.valid_encoding?
=> true
If this is not a bug, could someone please explain the rationale behind the behavior.
Thanks,
Brian