金本と申します。
お世話になります。

以下のようなスクリプトを走らせると、
1.9.1p0とtrunkで結果に差があります。

>---ここから---<
# coding: utf-8
fmt="%s テスト%s"
p fmt.encoding
a=["abc", "です。"]

a.each {|e|
  print e, ": ", e.encoding, "\n"
}
puts fmt % a
puts "----"
a[0].encode!("US-ASCII")
a.each {|e|
  print e, ": ", e.encoding, "\n"
}

p Encoding.compatible?(a[0], fmt)
p Encoding.compatible?(a[1], fmt)
p Encoding.compatible?(a[0], a[1])
puts fmt % a
>---ここまで---<

>---ここから1.9.1p0---<
ruby 1.9.1p0 (2009-01-30 revision 21907) [x86_64-linux]
#<Encoding:UTF-8>
abc: UTF-8
です。: UTF-8
abc テストです。
----
abc: US-ASCII
です。: UTF-8
#<Encoding:UTF-8>
#<Encoding:UTF-8>
#<Encoding:UTF-8>
abc テストです。
>---ここまで1.9.1p0---<

>---ここからtrunk---<
ruby 1.9.2dev (2009-08-11 trunk 24495) [x86_64-linux]
#<Encoding:UTF-8>
abc: UTF-8
です。: UTF-8
abc テストです。
----
abc: US-ASCII
です。: UTF-8
#<Encoding:UTF-8>
#<Encoding:UTF-8>
#<Encoding:UTF-8>
19:in `%': incompatible character encodings: US-ASCII and UTF-8
(Encoding::CompatibilityError)
        from enctest.rb:19:in `<main>'
>---ここまでtrunk---<
いまいち見づらくてどうもすみません。

1.9.1p243も結果はtrunkといっしょでした。
仕様変更やBugFixがあったかなにかで、こういう場合は%する前に、
encodingをそろえたほうがいいのでしょうか?
何か私がEncodingについて理解していなくて勘違いしているのかもしれませんが、
compatible?はEncodingが返ってきているので、compatibleなきがするのですが、
CompatibilityErrorになってしまうのがよくわかりませんでした。

Redmineにあげたほうがよろしいでしょうか?
よろしくお願いいたします。
-- 
Yutaka KANEMOTO
http://d.hatena.ne.jp/kinpoco/