るびきちです。

Ruby 1.9では同じバイト列であっても異なるエンコーディングの場合は == にはなりません。
方向性としては正しいかもしれませんが、ハマるケースが多いのではないでしょうか?
たとえばネットワークから読み込んだときサーバーが実際と異なるcharsetを吐き出した場合とか。
身近な例では何気なく下のようなコードを書いた場合です。
String#inspectがencoding情報を表示しない以上、
「同じ文字列なのになんで==にならないの!?おかしい!」と思う人が多いと思います。
僕としては、エンコーディングは空気のような存在であるべきだと思っています。
いちいちforce_encodingをつけるのも気持ち悪いですし。

異なるエンコーディングの文字列を結合できないのは当然だと思いますが、
せめて == での比較は許してもいいのではないでしょうか?
Rubyの == はFixnumとFloatの比較を許すなど空気を読んでくれる演算子だと思っていますが、
現状の String#== は厳密すぎると思います。
より厳密な比較ならばeql?がありますし。

# -*- coding: euc-jp -*-
# 日本語を含むコード
RUBY_VERSION                    # => "1.9.0"
RUBY_RELEASE_DATE               # => "2008-03-14"
GZIP_MAGIC = "\x1F\x8B"
open("/tmp/compressed.txt.gz", "r") do |f|
  magic = f.read(2)   # => "\x1F\x8B"
  magic == GZIP_MAGIC # => false
  if GZIP_MAGIC.respond_to? :encoding
    GZIP_MAGIC.encoding           # => #<Encoding:EUC-JP>
    magic.encoding                # => #<Encoding:ASCII-8BIT>
  end
end

--
rubikitch
Blog: http://d.hatena.ne.jp/rubikitch/
Site: http://www.rubyist.net/~rubikitch/