ユーザ用ツール

サイト用ツール


faq:tips:vim-enc

OpenDocument 形式でページを出力する 印刷用ページ

vimによる日本語文字コード自動判別と文字コード変換

フロントエンドサーバのロケール環境は、LANG=en_US.UTF-8になっていますが、SASはEUCが標準となっています。 フロントエンドサーバでは、EUCのファイルは文字化けしてしまうので、SASのプログラムやデータを編集したり表示する場合には、UTF-8に変換する必要があります。

vimは標準で文字コードの自動判別や変換に対応しているので、vimやviewを使えば、UTF-8環境のフロントエンドサーバでもEUCのファイルを編集したり表示することができます。

WindowsのPCとのファイル転送を行う場合に、改行コードの変換が必要となりますが、改行コードについても文字コードと同様にvimでの自動判別や変換が可能です。

vimの文字コード自動判別を有効にするには、“.vimrc”を設定する必要があります。

.vimrcの設定

文字コード自動判別

~/.vimrcに、自動判別の設定を追加します。.vimrcが無い場合は作成します。

:set encoding=utf-8
:set fileencodings=iso-2022-jp,euc-jp,sjis,utf-8

改行コードの自動認識

~/.vimrcに、自動判別の設定を追加します。.vimrcがない場合は作成します。

:set fileformats=unix,dos,mac

この設定により、日本語の文字コードを自動判別し、UTF-8環境で編集や表示が可能となります。

サンプル .vimrc

.vimrc
:set encoding=utf-8
:set fileencodings=iso-2022-jp,euc-jp,sjis,utf-8
:set fileformats=unix,dos,mac

.vimrcの改行コードがUNIXとなっていない(Windows PCで作成した .vimrc をサーバに転送した場合など)と、vimを起動した場合に、エラーとなります。

/home/norin/.vimrc の処理中にエラーが検出されました:
行    1:
E474: 無効な引数です: encoding=utf-8^M
行    3:
E474: 無効な引数です: fileformats=unix,dos,mac^M
続けるにはENTERを押すかコマンドを入力してください

この様な場合は、vim .vimrc としてファイルを読み込み(ENTERを押す)、以下のコマンドで、改行コードを変換して保存してください。。

:setl ff=unix
:wq

文字コード、改行コードを指定して保存

vimでファイルを開き、任意の文字コードでファイルを保存することができます。 vimでファイルを開き、vimのコマンドモードで以下のコマンドで文字コードを指定すると、保存するときに、指定した文字コードに変換されます。 これにより、nkfなどのコマンドを使用せずにファイルの文字コードを変換することができます。

文字コードを指定

:setl fenc=文字コード
  (setl=setlocal, fenc=fileencoding)

例:文字コードをEUCに変更

:setl fenc=euc-jp

改行コードを指定

:setl ff=改行コード
  (setl=setlocal, ff=fileformat)

例:改行コードをUNIXに変更

:setl ff=unix

上記、文字コードを指定した後に、ファイルを保存します。

:w

文字化けしたファイルを開き直す

自動判別に失敗した場合に、文字コードを指定してファイルを開き直すことができます。

vimでファイルを開き、文字化けした状態で、vimのコマンドモードで以下コマンドでファイルを開き直します。

:e ++enc=文字コード

vimでファイルを開き、^Mという文字が表示される場合、改行コードを変更してファイルを開き直します。

:e ++ff=改行コード
faq/tips/vim-enc.txt · 最終更新: 2018/12/20 09:08