• ベストアンサー

Ruby1.9で全角文字を半角文字にうまく変換できません。

Ruby1.9で全角文字を半角文字にうまく変換できません。 英数字までは以下のロジックでうまく出来たのですが、カナが正しく変換されません。 何か良い知恵をどうかご教示のほどお願いいたします。 ※★→←★の間の文字は半角カナです(ブラウザ上全角カナとなってしまうため、便宜上補足しました)。 moji = "イあ1Aa" moji.tr('a-zA-Z0-9ア-ン', 'a-zA-Z0-9★→ア-ン←★') 結果:★→ウ←★あ1Aa 何故か半角のイではなく半角のウとなってしまう。    ※アの場合のみ正しく半角のアに変換される。

質問者が選んだベストアンサー

  • ベストアンサー
  • siffon9
  • ベストアンサー率64% (136/211)
回答No.1

カナは文字コード表上でアルファベットの様に半角と全角で同じ順番に並んでいるわけではないので、trで単純に変換できません。 # coding: Windows-31J require 'nkf' input = "アイゥェォバヴァポヲ".encode('Shift_JIS') output = NKF.nkf('-SsZ4',input ).encode('Windows-31J') puts output ruby 1.9.1p429 (2010-07-02 revision 28523) [i386-mswin32]の環境で確認しました。 エンコードは適宜変更して下さい。

NOBU4517
質問者

お礼

例題付きで回答有難う御座います。 とても勉強になりました。

関連するQ&A