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で文字化けなく開けるようになる。