【Ruby】invalid byte~の対処法

スポンサーリンク

きっとあなたは

Windows上で、Rubyのなにがしかのアプリケーションを実行したときに、
「invalid byte sequence in Windows-31J (ArgumentError)」
というエラーが出て検索してこられたんだと思います。

文字コードがなんかアレらしい

だいたUTF-8で書かれていると思うんですが、WindowsだとこのWindows-31Jで読もうとするので、このエラーが出ちゃうということらしいです。
まあ理由はどうあれ、このコマンド一発でOKです。
理由はよくわかっていなくても、解決することってありますよね。

set RUBYOPT=-EUTF-8

実際にコマンド打った時の画像は、こんな感じ。

画像は3回コマンド打っていますが、set RUBYOPT=-EUTF-8を打てばそれで大丈夫です。
内容的には

C:\Ruby\>ruby -e "puts Encoding.default_external"
Windows-31J 【←デフォルト】

C:\Ruby\>set RUBYOPT=-EUTF-8 【←UTF-8を指定】

C:\Ruby\Mailer>ruby -e "puts Encoding.default_external"
UTF-8 【←そしたら変わっている】

というような流れです。

毎回やらなきゃ

これでエラー出ずに、アプリケーションを実行できたんですが、別の機会にまたやろうとしたら同じエラーが出てしまいました。
どうやら、コマンドプロンプトを閉じてしまうと元に戻ってしまうらしいです。
set RUBYOPT=-EUTF-8がずっと有効になるわけではないという感じでしょうか。
これ、えらいめんどくさいですね。
なんかいい方法ないのか。

↓↓↓ブログランキングに参加しています↓↓↓

にほんブログ村 PC家電ブログへ

スポンサーリンク