docker execでコンテナに入ることができるが、入った先でvimが文字化けしてしまう現象に遭遇した。
文字化けの現象
sudo docker exec -it myapp /bin/bash
vim index.html
:e ++enc=utf8
などしても改善せず。
解決するにはlocale環境変数を設定する
こういう場合は、localeがUTF-8じゃない可能性がある。dockerのコンテナに入った状態でロケールを調べる:
$ locale
LANG=
LANGUAGE=
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=
もし、LANGが未設定であれば、コンテナに入った状態で、LANGを設定する。
export LANG=en_US.UTF-8
これでvimで文字化けなく開けるようになる。