Regexp.union に

* shift_jis な 0xa1 すなわち JIS X 0201 片仮名における区点と、
* ascii-8bit な 0x80 すなわち謎のバイナリの 0x80

を表現する正規表現を与えると、ascii-8bit な 0xa1 と 0x80 す
なわち謎のバイナリの 0xa1 と 0x80 にマッチする正規表現になっ
てしまうのはおかしいのではないでしょうか。shift_jis な区点と
いう文字はどこにいってしまったのでしょう?

% ./ruby -ve '
r = Regexp.union(
Regexp.new("[\\xa1]".force_encoding("shift_jis")),
Regexp.new("[\\x80]".force_encoding("ascii-8bit")))
p r
p r.encoding'
ruby 1.9.0 (2007-10-19 patchlevel 0) [i686-linux]
/(?-mix:[\xa1])|(?-mix:[\x80])/
<Encoding:ASCII-8BIT>
-- 
[田中 哲][たなか あきら][Tanaka Akira]