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