藤岡です。
環境は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"
以上のようにちょっとずつ違うようです。
よろしくお願いします。