Shift_JIS 風 UTF-8 と CP932 風 UTF-8 の正規化
str.gsub!(/\xC2\xA2/, "\xEF\xBF\xA0") str.gsub!(/\xC2\xA3/, "\xEF\xBF\xA1") str.gsub!(/\xC2\xAC/, "\xEF\xBF\xA2") str.gsub!(/\xC2\xA6/, "\xEF\xBF\xA4") str.gsub!(/\xE2\x80\x94/, "\xE2\x80\x95") str.gsub!(/\xE2\x80\x96/, "\xE2\x88\xA5") str.gsub!(/\xE3\x80\x9C/, "\xEF\xBD\x9E") str.gsub!(/\xE2\x88\x92/, "\xEF\xBC\x8D")
で正規化できます。
Ruby1.9 なら以下のように書いた方がベター。
str.tr("\u{301C 2016 2212 00A2 00A3 00AC 2014 00A6}", "\u{FF5E 2225 FF0D FFE0 FFE1 FFE2 2015 FFE4}")