gVimが対応する文字コードの一覧を見ようと思ったら、cygwinあたりで
iconv -l
で一覧が表示される。実際に入っているDLLとは異なるが、大体はこれで把握できるはず。
日本語でよく使われそうな文字コードは
$ iconv.exe -l | grep -i "utf\|jis\|jp\|cp932" CP65001 UTF-8 UTF8 UTF-16 UTF16 UTF-16BE UTF16BE UNICODEFFFE UTF-16LE UTF16LE UTF-32 UTF32 UTF-32BE UTF32BE UTF-32LE UTF32LE CP65000 UNICODE-1-1-UTF-7 UTF-7 CSUNICODE11UTF7 ISO-IR-14 ISO646-JP JIS_C6220-1969-RO JP CSISO14JISC6220RO JIS0201 JISX0201-1976 JISX0201.1976-0 JIS_X0201 X0201 CSHALFWIDTHKATAKANA ISO-IR-87 JIS0208 JISX0208.1983-0 JISX0208.1990-0 JIS_C6226-1983 JIS_X0208 JIS_X0208-1983 JIS_X0208-1990 X0208 CSISO87JISX0208 ISO-IR-159 JIS0212 JISX0212.1990-0 JIS_X0212 JIS_X0212-1990 JIS_X0212.1990-0 X0212 CSISO159JISX02121990 CP51932 EUC-JP EUCJP EUC_JP EXTENDED_UNIX_CODE_PACKED_FORMAT_FOR_JAPANESE CSEUCPKDFMTJAPANESE MS_KANJI SHIFT-JIS SHIFT_JIS SJIS CSSHIFTJIS CP932 WINDOWS-31J ISO-2022-JP ISO2022JP CSISO2022JP ISO-2022-JP-1 ISO-2022-JP-2 CSISO2022JP2 CP50221 ISO-2022-JP-ESC ISO-2022-JP-MS EUC-JIS-2004 EUC-JISX0213 SHIFT_JIS-2004 SHIFT_JISX0213 ISO-2022-JP-2004 ISO-2022-JP-3
参考)UTF-16は、BOMを使ってエンディアンの指定が必要だけど、BOMがない場合はUTF-16BEを暗示するらしい(ウィキペディア)。
また、UTF-16LEとUTF-16BEでは、BOMを付けてはいけないことになっているが、付けた場合はUTF-16のLE/BEの指定付きと同じ符号化になるので、ついていても問題はないのではないかと思ったりする。そのため、おそらく、ファイルの書式(XMLなど)を定める上位のフォーマットで、LE/BEを指定されている場合にはBOMを付けないように、という意味かと思われる。
UnicodeでBOMの有無を確認するには
:set bomb?
BOMをつけるには
:set bomb
BOMを消すには
:set nobomb
一度開いたファイルの文字コードを読み込ませ直すには
:e ++enc=utf-8