这是我的问题:
当我打开文件时,我从vim收到此消息:
"myfilename.sql" [converted] 78565L, 10487381C
如果我:set
我得到:
Options
backspace=2 colorcolumn=+1 formatoptions=qc scrolloff=15 smartindent textwidth=80 visualbell
backup expandtab ignorecase shiftwidth=4 syntax=sql ttyfast t_vb=
bomb filetype=sql number showcmd tabstop=4 ttymouse=sgr
backupdir=~/.vim/backup
comments=s1:/*,mb:*,ex:*/,:--,://
define=\c\<\(VARIABLE\|DECLARE\|IN\|OUT\|INOUT\)\>
directory=~/.vim/tmp
fileencoding=utf-8
fileencodings=utf-8,ucs-bom,default,latin1
matchpairs=(:),{:},[:],<:>
omnifunc=sqlcomplete#Complete
viminfo='10,"100,:20,%,n~/.viminfo
我的角色可见如下:
我发现如果我重新加载&amp;使用:e ++enc=latin1
强制编码latin1我得到正确的重音,但并非所有:
所以我发现(唯一的解决方案)获得所有正确的可见编码是手动强制回到utf8::set encoding=utf8
然后我得到:
如果我:set
我得到:
--- Options ---
backspace=2 encoding=utf-8 formatoptions=qc scrolloff=15 smartindent textwidth=80 visualbell
backup expandtab ignorecase shiftwidth=4 syntax=sql ttyfast t_vb=
colorcolumn=+1 filetype=sql number showcmd tabstop=4 ttymouse=sgr
backupdir=~/.vim/backup
comments=s1:/*,mb:*,ex:*/,:--,://
define=\c\<\(VARIABLE\|DECLARE\|IN\|OUT\|INOUT\)\>
directory=~/.vim/tmp
fileencoding=latin1
fileencodings=utf-8,ucs-bom,default,latin1
matchpairs=(:),{:},[:],<:>
omnifunc=sqlcomplete#Complete
viminfo='10,"100,:20,%,n~/.viminfo
如您所见,我看到fileencoding=latin1
因此我尝试强制它为utf8::set fileencoding=utf-8
。我保存:wq
,每当我想重新打开它时,没有任何改变,我仍然必须做所有这些以获得具有良好口音的推荐者显示!
我现在唯一想要的就是保存它,这样我就可以重新打开它而不需要做所有这些来做到正确。我该怎么办?
答案 0 :(得分:3)
编码和fileencoding是vim中的两个选项。有关详细信息,请阅读帮助文档。
如果您的文件编码为UTF-8,最简单的方法是设置encoding=utf-8
和fileencoding=utf-8
。
您可以在vimrc中添加这些行,使其成为默认编码选项。
答案 1 :(得分:0)
简短的回答:我有一个类似的问题,国际字符显示为▒,并由
修复:set termencoding=utf-8
更长的答案:以下是三个相关设置。通常他们会自动做正确的事,但如果他们不这样做,你可以设置它们。
- :设置编码 - 设置用于读取文件的编码
- :设置fileencoding - 设置保存文件时使用的编码
- :设置termencoding - 设置用于向终端显示字符的编码
例如,如果文件是UTF-8但是Vim将其读作Latin1,并且同时您的终端是UTF-8但是Vim正在将该端口写为Latin1,则可能会出现您所描述的奇怪结果。在这种情况下,即使在引擎盖下一切都是错误的,角色也可能看起来正确。您可以将光标放在相关字符上并按ga
查找其编码值来检查此假设。