我在 WinXP 上使用 Vim 7.3。我在工作中使用由应用程序生成的 XML 文件,该应用程序使用 UCS-2le 编码编写它们。在 vim wiki 上阅读了几篇关于编码的文章后,我发现了以下建议,即在 vimrc 中设置我的文件编码:
set fileencodings=ucs-bom,utf-8
有问题的文件以 FF EE 作为第一个字符(已确认使用 HxD 查看),但 Vim 无法正确打开它。我可以在我的 vimrc 中正确打开我的 UCS-2le 文件:
set fileencodings=ucs-2le, utf-8
但是现在我的 UTF-8 文件一团糟!
任何建议如何进行?我通常在没有 MSwin 的情况下运行 Gvim(如果重要的话)。我使用的插件很少。我关于文件编码的实际 vimrc 设置是:
set encoding=utf-8
set fileencodings=ucs-bom,utf-8,ucs-2le,latin1
第三个位置的 ucs-2le 条目似乎没有什么区别。据我了解,第一个条目(设置编码)是 Vim 在其缓冲区内部使用的编码,而第二个(设置文件编码)处理 vim 读取和写入文件时的文件编码。因此,在我看来,由于文件具有字节顺序标记,因此 ucs-bom 作为 setfileencodings 中的第一个条目应该捕获它。据我所知,vim 似乎无法识别该文件是每个字符 16 个字节。
注意:我可以/确实通过在打开 ucs-2le 文件时手动设置文件编码来解决问题:
edit ++enc=ucs2-le
干杯。