背景
サーバ環境など、日本語環境が整っていない環境の場合、、irbでマルチバイト文字を扱うとエラーになる
(localeコマンドで LANG が設定されてなく、 posix になっているなど)
$ locale
LANG=
LC_CTYPE="POSIX"
LC_NUMERIC="POSIX"
LC_TIME="POSIX"
LC_COLLATE="POSIX"
LC_MONETARY="POSIX"
LC_MESSAGES="POSIX"
LC_PAPER="POSIX"
LC_NAME="POSIX"
LC_ADDRESS="POSIX"
LC_TELEPHONE="POSIX"
LC_MEASUREMENT="POSIX"
LC_IDENTIFICATION="POSIX"
LC_ALL=
VMやDockerなど他人の作ったイメージを利用するときは確認しておいたほうがいいかもです。
エラーと対応方法
rails console
などで irb
を立ち上げておもむろに日本語文字列を扱おうとすると、、
invalid multibyte char
というエラーが出ます。
irb(main):001:0> name = 'ほげ'
SyntaxError: (irb):1: invalid multibyte char (US-ASCII)
...省略
utf-8で扱うことが限定であれば、以下のように環境変数を設定した後に rails console
を立ちあげれば、マルチバイト文字も使えることができます。
export LANG=ja_JP.UTF-8
という日本語オンリーの環境だと起こらないことですが、たまにハマってしまうのでメモ。