在我baidu的博客:vim乱码问题解决方案 中转载了两篇帖子,里边有对vim编码较详细的介绍.
vim对编码的设置有以下四个地方:
1. encoding:
是 Vim 内部使用的字符编码方式。Vim 内部所有的 buffer、寄存器、脚本中的字符串等,全都使用这个编码。
2. termencoding:
Vim 用于屏幕显示的编码,在显示的时候,Vim 会把内部编码转换为屏幕编码,再用于输出。内部编码中含有无法转换为屏幕编码的字符时,该字符会变成问号,但不会影响对它的编辑操作。如果 ''termencoding'' 没有设置,则直接使用 ''encoding'' 不进行转换。
3. fileencoding
当 Vim 从磁盘上读取文件的时候,会对文件的编码进行探测。如果文件的编码方式和 Vim 的内部编码方式不同,Vim 就会对编码进行转换。转换完毕后,Vim 会将 ''fileencoding'' 选项设置为文件的编码。当 Vim 存盘的时候,如果 ''encoding'' 和 ''fileencoding'' 不一样,Vim 就会进行编码转换。
4. fileencodings
一个用逗号分隔的列表,列表中的每一项是一种编码的名称。当我们打开文件的时候,VIM 按正是顺序使用 fileencodings 中的编码进行尝试解码.
是 Vim 内部使用的字符编码方式。Vim 内部所有的 buffer、寄存器、脚本中的字符串等,全都使用这个编码。
2. termencoding:
Vim 用于屏幕显示的编码,在显示的时候,Vim 会把内部编码转换为屏幕编码,再用于输出。内部编码中含有无法转换为屏幕编码的字符时,该字符会变成问号,但不会影响对它的编辑操作。如果 ''termencoding'' 没有设置,则直接使用 ''encoding'' 不进行转换。
3. fileencoding
当 Vim 从磁盘上读取文件的时候,会对文件的编码进行探测。如果文件的编码方式和 Vim 的内部编码方式不同,Vim 就会对编码进行转换。转换完毕后,Vim 会将 ''fileencoding'' 选项设置为文件的编码。当 Vim 存盘的时候,如果 ''encoding'' 和 ''fileencoding'' 不一样,Vim 就会进行编码转换。
4. fileencodings
一个用逗号分隔的列表,列表中的每一项是一种编码的名称。当我们打开文件的时候,VIM 按正是顺序使用 fileencodings 中的编码进行尝试解码.
但是vim的探测经常不准确, 这也有个编码本身的原因. 也因此便有了FencView 这个插件.他会基于统计判断文件的编码.
关于这个插件可以参考下面这几篇文章:
http://www.newsmth.net/bbscon.php?bid=731&id=20845&ftype=11
http://www.rainux.org/2005/10/20/106
起初该插件我未能成功安装, 原来是我的iconv有问题.
上面这两篇文章中这样写道
注2: 在 GNU 的 FTP 上可以下载到 iconv 的 Win32 版(http://mirrors.kernel.org/gnu/libiconv/libiconv-1.9.1.bin.woe32.zip),不推荐去 GnuWin32(http://gnuwin32.sourceforge.net/) 下载 libiconv,因为那个版本旧一些,并且需要自己改名 dll 文件。
于是我下载了这个:http://mirrors.kernel.org/gnu/libiconv/libiconv-1.9.1.bin.woe32.zip
再按照FencView首页 的说明进行安装, 一切解决.
恩, 感谢插件作者以及上面所有人的辛勤劳动, 现在编辑日语文件爽了很多, 无需去修改文件的编码格式了~~~