String#== が推移律を満たしておらず、同値関係でなくなっていま
す。
% ./ruby -ve '
e = "\xa1\xa1".force_encoding("euc-jp")
a = "\xa1\xa1".force_encoding("ascii-8bit")
s = "\xa1\xa1".force_encoding("sjis")
p e == a
p a == s
p e == s'
ruby 1.9.0 (2008-09-23 revision 19487) [i686-linux]
true
true
false
以前 [ruby-dev:32693] で同じような問題を指摘しましたが、
e と a が同じで、a と s が同じなのに、e と s が異なるのは ==
に対する期待に反します。
--
[田中 哲][たなか あきら][Tanaka Akira]