2022/08/12

gVimの文字コード周りについてのメモ

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




0 件のコメント:

コメントを投稿