Vim(またはgvim)でファイルを編集しているとしましょう。ファイルのエンコーディングについてはわかりませんが、それがUTF-8なのかISO-8859-1なのか、それとも何なのか知りたいのですが。どのようなエンコーディングが使われているのかを私に示すようにどういうわけかvimに指示できますか?
Fileencoding設定は現在のバッファのエンコーディングを表示します。
:set fileencoding
fileencoding=utf8
平文ファイルのエンコーディングを決定する一般的な方法はありません。その情報はファイル自体に保存されないからです。エンコーディングを示すいわゆるBOMがあるUTF-8ファイルを除いて。これが、xmlおよびhtmlファイルに文字セットメタタグがある理由です。
'encoding'設定で特定のエンコーディングを強制することができます。エディタがこれらの設定を処理する方法についてはVimの:help encoding
と:help fileencoding
を参照してください。リストされたものに基づいてvimが検出を試みるようにあなたのvimrcにいくつかのファイルエンコーディング設定を追加することもできます。
ファイルのエンコーディングはファイル内のどこにも明示的に記述されていないことに注意してください。したがって、VIMや他のアプリケーションはエンコーディングを推測する必要があります。これを行うための標準的な方法は、VIM内から実行できるchardet
アプリケーションを使用することです。
:!chardet %
Jtimbermanによって提供された答えはあなたにカレントバッファのエンコーディングを示していますが、これはディスク上のファイルと同じエンコーディングではないかもしれません。したがって、特にVIMが常に特定のエンコーディング(つまりUTF-8)を使用するように設定されている場合、chardet
がVIMとは異なるエンコーディングを表示することがあります。
chardet
のいいところは、それがその推測に信頼性スコアを与えることですが、VIMは\ x7F(ASCII 127)より多くの文字がない場合、エンコーディングを推測するのは間違っていることがありえます。たとえば、PHP codeの長いファイルに単一のא
を追加すると、chardet
は0.72の信頼度を持つISO-8859-2
であると見なしますが、少し長いフレーズשלום, עולם!
を追加すると、信頼スコアはUTF-8になります0.99。どちらの場合も、ディスク上のファイルがUTF-8であるためではなく、VIMが内部的にUTF-8を使用するように構成されているため、set fileencoding?
はUTF-8
を示しました。