Rubyでエラー「invalid multibyte char (US-ASCII)」が出た時の対処法


スポンサーリンク

これはRuby1.9のエンコーディングがデフォルトでUS-ASCIIとなっているため、日本語などを使うと出てくるエンコーディングエラーです。
出力しようとしている文字列がUS-ASCII以外であると判断されてエラーになるってわけです。

「invalid multibyte char (US-ASCII)」エラーに対処するには、マジックコメントを書きます。

プログラムの先頭に、以下のような「マジックコメント」を書いて、スクリプトエンコーディングを指定します。

# encoding: utf-8

これでスクリプトファイルがUTF-8で作成されているということをRubyに明示的に示すことができます。

繰り返しになりますが、マジックコメントはプログラムの先頭に書きます。
ただし、shebangがある場合は、その次の行に書きます。

shebangというのは、UNIXやLinuxで、実行インタプリタを指定するためのコメントです。

#!/bin/bash

みたいなやつです。
こいつがあるときは、

#!/bin/bash
# encoding: utf-8

と書きます。

マジックコメントは以下のとおり、色々と書き方があります。

# coding: utf-8
# encodng: utf-8
# -*- coding: utf-8 -*-
# vim:set fileencoding=utf-8:

vimのエンコーディングについて参考)http://stackoverflow.com/questions/16507777/vim-set-encoding-and-fileencoding-utf-8

utf-8以外のエンコードも指定することは可能で、複数ファイルでシステムを作っているときは、それぞれに設定することもできます。