我想/需要编辑其中包含UTF-8字符的文件,我想使用VIM。 在我被指责询问之前提出的问题之前,我已经阅读了关于编码,文件编码[s],termencoding等的VIM文档,用Google搜索主题并阅读其他文本中的this question。
这是一个带有UTF-8字符的句子,我用它作为测试用例。
From Japanese 勝 (katsu) meaning "victory"
如果我用记事本打开(UTF-8)文件,它显示正确。 当我用vim打开它时,我得到的最好的东西是一个黑色方块,其中katsu的日语字符应该是。 更改fileencoding或encoding的任何设置都无济于事。
为什么vim给我一个黑色方块,记事本在没有问题的情况下显示它?如果我将文本从vim复制/粘贴复制到记事本,则显示正确。指示文本未损坏但显示错误。但是什么设置会对此产生影响呢?
欢迎任何建议
这是我的_vimrc的相关部分。
if has("multi_byte")
set encoding=utf-8
if &termencoding == ""
let &termencoding = &encoding
endif
setglobal fileencoding=utf-8
set fileencodings=ucs-bom,utf-8,latin1
endif
我打开文件时的实际设置是:
encoding=utf-8
fileencoding=utf-8
termencoding=utf-8
我的电脑正在运行Windows 10,语言为英语(美国)。
====编辑2016年10月4日。====
这是在vim中加载文件并将其转换为十六进制后文件内容的样子。
0000000: efbb bf46 726f 6d20 4a61 7061 6e65 7365 ...From Japanese
0000010: 20e5 8b9d 2028 6b61 7473 7529 206d 6561 ... (katsu) mea
0000020: 6e69 6e67 2022 7669 6374 6f72 7922 0d0a ning "victory"..
第一个字节是微软BOM魔术,其余部分就像ascii,除了第二行的第二,第三和第四个字节,它必须以某种方式表示非ascii字符。
答案 0 :(得分:1)
使Vim成功显示UTF-8字符有两个步骤:
'encoding'
和'fileencodings'
选项控制的。一旦你正确设置了它(你可以通过:setlocal filenencoding?
验证,或者ga
命令对已知字符进行验证,或者至少通过检查每个字符是由单个单元格表示,而不是组成字节值),有:guifont
)。例如,要正确显示日语汉字字符,您需要在Windows中安装远东语言支持,然后
:set guifont=MS_Gothic:h12:cSHIFTJIS