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=改行コード