ファイルの文字コードが「utf-8」にもかかわらず、vimの表示が文字化けしているときの対応方法です。
文字化けになってしまう時
ファイルの文字コードが「utf-8」だけど、vimで表示すると文字化けになってしまうときは、大体、システム環境変数のLANGによる影響が個人的に多いんじゃないか?と思っています。
ファイルはUTF-8で認識されていて、catコマンドで表示しても文字化けはしていない。
$ file sample.txt
sample.txt: UTF-8 Unicode text ・・・ ファイルの文字コードは「utf-8」で認識している
$ cat sample.txt
あいうえお ・・・ 表示も文字化けしていない
vimでファイルを開くと文字化けしてしまう。
筐A~B筐A~D筐A~F筐A~H筐A~J ・・・ 文字化けしている
~
~
~
~
~
~
~
~
~
"sample.txt" 1L, 16B 1,13-21 All
例えば、システム環境変数のLANGが「ja_JP.UTF-8」になっていないと、vimの表示が文字化けしてしまうので、システム環境変数を変更すればvimの表示で文字化けすることはなくなります。
ただし、色々な理由でシステム環境変数が変更できないときの対応方法です。
$ env | grep LANG
LANG=C
$ export LANG=ja_JP.UTF-8 ・・・ LANG環境変数を「ja_JP.UTF-8」に変更すれば文字化けは解消されるけど
$ env | grep LANG
LANG=ja_JP.UTF-8
vimの文字化けを解消する
現在のvimの文字コードを表示します。(vimエディタでファイルを開いてください)
筐A~B筐A~D筐A~F筐A~H筐A~J
~
~
~
~
~
~
~
~
~
~
:set encoding
現在のvimの文字コードは「latin1」と表示されています。
筐A~B筐A~D筐A~F筐A~H筐A~J
~
~
~
~
~
~
~
~
~
encoding=latin1 0,0-1 All
vimの文字コードを「utf-8」にセットします。
筐A~B筐A~D筐A~F筐A~H筐A~J
~
~
~
~
~
~
~
~
~
:set encoding=utf-8
文字化けされずに表示されるようになっていると思います。
あいうえお
~
~
~
~
~
~
~
~
~
1,13-9 All
現在の文字コードを表示します。
あいうえお
~
~
~
~
~
~
~
~
~
:set encoding
現在の文字コードは「utf-8」となっています。
あいうえお
~
~
~
~
~
~
~
~
~
encoding=utf-8 1,13-9 All
永続的にutf-8で表示するようにする
基本的には、文字化けが起こる機会は少なく、もし、文字化けが発生した場合の原因調査が必要だと思いますので、永続的な設定はしなくても良いと思います。ただ、そんなの「めんどくせー」という人には、vimの設定ファイルに記述することで永続的にutf-8で表示されます。
$ vim ~/.vimrc ・・・ 新規で「.vimrc」ファイルを作成
set encoding=utf-8