p_chinのおっぱいブログ

UnityとPerlなど

rubyファイルを実行すると、shebangの書いてある1行目でInvalid charエラーが出た時の対処

Xvideos.rb:1: Invalid char `\357' in expression
Xvideos.rb:1: Invalid char `\273' in expression
Xvideos.rb:1: Invalid char `\277' in expression

上記の様なエラーが出る。

原因は、rubyやshファイルをBOM付きutf-8で保存してしまうと、何故かshebangrubyやshだと解釈して出るエラーらしい

そもそもvimのfileencodingsの設定がおかしいのは後述するが、vimの-bオプションでBOMを可視化した状態で編集出来るので、shebangの先頭にある<feff>を消してやる

.vimrcのfileencodingsの一番最初にucs-bomと書いてたのでそれでrubyファイルが保存されてたっぽいので、最初にutf-8と指定するようにした(先頭から優先的に適用するので)