Rubyで半角文字を全角に変換する

jcode.rbを利用するので 1.8系までだけど・・・

# coding: utf-8

require 'jcode'

hankaku = 'アイウエオ-12345'
NKF.nkf('-WwXm0', hankaku).tr("!-~\s", "!-〜 ")

Linux系ならこれで構わないんだけど、ここで変換した文字列をファイルに出力してWindowsのエディタで開くと
みごとに全角ハイフンが文字化けしてくれる。


原因を調べてみると、どうやらUTF-8において全角ハイフンを表すコードは複数あるようで、上記のコードで変換
すると「e2 88 92」というコードに変換される。


Windowsではこのコードが表示できないために文字化けが発生している。

とりあえずの対応として、変換後の文字列に含まれる全角ハイフンのコードをWindowsでも表示できるものに書き換える

# coding: utf-8

require 'jcode'

hankaku = 'アイウエオ-12345'
NKF.nkf('-WwXm0', hankaku).tr("!-~\s", "!-〜 ").gsub(/\xe2\x88\x92/, "\xef\xbc\x8d")

これ以外にもWindowsで表示できないコードに変換されてしまう問題はきっとあるんだろうけど、
なんかスマートに変換する方法ないかな・・・