ruby -Ku プログラムファイル名
Windows 環境でコマンドプロンプトを使って日本語を表示させようとして躓いたのでメモ。ソースコードを UTF-8 で書きたい人を対象にしています。
set RUBYOPT=-EUTF-8でエンコーディングを指定すれば良いのでした。
# CP932 で書かれたファイルを読み込んで UTF-8 文字列に変換する File.open('cp932.txt', 'r:cp932:utf-8').gets # UTF-8 エンコーディング文字列
異なるエンコーディングであれば、String#encode でエンコーディングを変換する時にオプションに :invalid=>:replace, :replace=>'?' を指定すれば 不正な文字を置換できます。
ruby 2.1.0 には不正なバイト列を代替文字に置き換える String#scrub メソッドが追加されました。 @hsbt 氏が string-scrub という gem を用意してくださっているので、ruby 2.0 でもこの gem をインストールすれば利用できます。
Windowsでは日本語ファイルパスにも注意が必要
実は # coding: utf-8 だけでもOKなんです。
Ruby 2.0ではデフォルトのスクリプトエンコーディングがUTF-8となり、大抵の環境でマジックコメントは不要になった。