文字コードをコマンドで切り替える(iTerm2 )


環境、ファイルごとに文字コードがeuc, utf-8と混在しており、頻繁に日本語が文字化けしていました。
毎回iTerm2の設定画面で切り替えていましたが、面倒なのでコマンドで切り替えれるようにします。

プロファイルを文字コードの数だけ作る

iTermを開いている状態でcmd + ,でPreferencesを開き、
+ボタンから必要な数だけプロファイルを作成します。
名前は文字コード名がよいでしょう。

Terminal設定で実際の文字コードを設定する

コマンドでプロファイルを切り替える

$ echo -e '\033]1337;SetProfile=プロファイル名\a'で任意のプロファイルに切り替えることができます。

utf-8に切り替えてみる

$ echo -e '\033]1337;SetProfile=utf-8\a'
$ cat test.txt
aaa
あああ

eucに切り替えてみる

$ echo -e '\033]1337;SetProfile=euc\a'
$ cat test.txt
aaa
秧???????

参考:https://www.iterm2.com/documentation-escape-codes.html

シェルに切り替えコマンドを登録する

毎回コマンドを打つのは面倒なのでbash_profileや.zshrcに登録しておきます。

zshrcを更新後、source .zshrcコマンドやログインし直して設定値を読み込み直します。

alias utf="echo -e '\033]1337;SetProfile=utf-8\aencording:utf-8'"
alias euc="echo -e '\033]1337;SetProfile=euc\aencourding:euc'"

簡単に文字コードを切り替えることができるようになりました。

$ utf
encoding:utf-8
$ cat test.txt
aaa
あああ
$ euc
encoding:euc
$ cat test.txt
aaa
秧???????