藤岡です。

環境はdebian sarge+backportsの
ruby 1.8.5 (2006-08-25) [i386-linux]です。

#!/usr/bin/ruby -Ku

def str_upcase(str)
  oldkcode=$KCODE
  $KCODE="UTF-8"
#1  result=str.tr("ャュョァィゥェォッ","ヤユヨアイウエオツ")
#2  result=str.tr("ャュョァィゥェォ","ヤユヨアイウエオ").gsub(/ッ/,'ツ'))
  result.gsub!(/ | |\r|\n|\t/,'')
  $KCODE=oldkcode
  result
end
p str_upcase("ホウジョウ ソウウン")

以上のようなコードで#2は動作するのに
#1は文字化けします。
ッが何か関係しているのか思ってはいるのですが、
よくわかっていません。

fujioka@shake:/tmp$ ruby -Ku jikken.rb
"□ウジ□ウソウウ□"
fujioka@shake:/tmp$ ruby -Ku jikken.rb
"ホウジヨウソウウン"

以上のような感じです。
p で出力してみると、
"\343\203\233\343\202\246\343\202\270\343\203\250\343\202\246\343\202\275\343\202\246\343\202\246\343\203\263"
"\343\204\233\343\202\246\343\202\270\343\204\250\343\202\246\343\202\275\343\202\246\343\202\246\343\204\263"
以上のようにちょっとずつ違うようです。

よろしくお願いします。