From: Fujioka Date: 2007-05-15T15:56:37+09:00 Subject: [ruby-list:43502] UTF-8でtrがうまく機能しない 藤岡です。 環境は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" 以上のようにちょっとずつ違うようです。 よろしくお願いします。