macOS Mojave 10.14 にアップデートしたら文字化けしたので調べました。
ターミナル
- iTerm2 3.2.2beta3
- その後、他の安定版や古いバージョンで試したところ再現
- OS 付属の
ターミナル
では再現せず
LC_CTYPE がおかしい?
SSH 先
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory
LANG=ja_JP.UTF-8
LC_CTYPE=UTF-8
LC_NUMERIC="ja_JP.UTF-8"
LC_TIME=C
LC_COLLATE="ja_JP.UTF-8"
LC_MONETARY="ja_JP.UTF-8"
LC_MESSAGES=C
LC_PAPER="ja_JP.UTF-8"
LC_NAME="ja_JP.UTF-8"
LC_ADDRESS="ja_JP.UTF-8"
LC_TELEPHONE="ja_JP.UTF-8"
LC_MEASUREMENT="ja_JP.UTF-8"
LC_IDENTIFICATION="ja_JP.UTF-8"
LC_ALL=
ローカル(mac)
$ locale
LANG="ja_JP.UTF-8"
LC_COLLATE="ja_JP.UTF-8"
LC_CTYPE="UTF-8"
LC_MESSAGES="C"
LC_MONETARY="ja_JP.UTF-8"
LC_NUMERIC="ja_JP.UTF-8"
LC_TIME="C"
LC_ALL=
※ LC_CTYPE="ja_JP.UTF-8" vim hoge
とすると文字化けが解消
下記のいづれかで対応可能
- Preference > Profiles > Terminal > Envirionment
-
Set locale variables automatically
のチェックを外す
-
- SSH 先の環境変数
LC_*
を適当に設定する -
/etc/ssh/ssh_config
でSendEnv LANG LC_*
しないようにする
なぜ起きた?
mojave が原因なのか、iTerm2が原因なのか不明ですが、バグレポートは上がっているみたいです。なので近々iTerm2 側で対応がされるかもしれません。