如何在vim中读取sjis编码的文件?

时间:2010-11-05 06:33:40

标签: vim encoding

我有一个hd文件,它是shift-JIS编码(日文),我无法在vim下阅读。设置enc = cp932或enc = sjis会生成垃圾。该文件在emacs中看起来很好,所以我想这是vim特定的。我可以做什么来读它(除了将它转换为像utf-8这样的理智编码)。

3 个答案:

答案 0 :(得分:13)

您不应该更改encoding选项:它用于字符串的内部表示,只有当前编码不包含所需编码中的字符时才应更改。如果您有时使用sjis编码编辑文件,则

  1. 请确保fileencodings选项包含sjis:将此类内容放入vimrc

    set fileencodings=ucs-bom,utf-8,sjis,default
    
  2. 如果使用此选项,vim仍无法正确识别文件编码,请使用e ++enc=sjis /path/to/file打开文件。或者,如果文件已经打开,请使用e! ++enc=sjis(不带文件名)。

答案 1 :(得分:0)

来自vim帮助:

There are a few encodings which are similar, but not exactly the same.  Vim
treats them as if they were different encodings, so that conversion will be
done when needed.  You might want to use the similar name to avoid conversion
or when conversion is not possible:

    cp932, shift-jis, sjis
    cp936, euc-cn

答案 2 :(得分:0)

对我来说,更改fileencoding(++ enc =)在Ubuntu Linux上的gVim中工作得很好,但在Windows 7上它没有(全部变成?字符)。但我发现即使不改变fileencoding(默认的ucs-bom),我也可以通过改变guifont来显示日文字符:

set guifont=MS_Gothic:h9:cSHIFTJIS

但是,输入日文字符仍然不起作用(使用Microsoft IME键入日语会给出?字符)。

仅仅为了比较,在Linux上我的guifont只是:

guifont=Monospace 10

显示和输入(使用IBus Anthy IME)都能正常工作。