vim编码:latin1和utf-8

时间:2014-08-04 09:41:09

标签: vim character-encoding

这是我的问题:

  • 当我打开文件时,我从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
    
  • 我的角色可见如下:

    vim bad encoding

  • 我发现如果我重新加载&amp;使用:e ++enc=latin1强制编码latin1我得到正确的重音,但并非所有

    vim almost good encoding

  • 所以我发现(唯一的解决方案)获得所有正确的可见编码是手动强制回到utf8::set encoding=utf8然后我得到:

    vim good encoding

  • 如果我: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,每当我想重新打开它时,没有任何改变,我仍然必须做所有这些以获得具有良好口音的推荐者显示

    < / LI>
  • 我现在唯一想要的就是保存它,这样我就可以重新打开它而不需要做所有这些来做到正确。我该怎么办?

2 个答案:

答案 0 :(得分:3)

编码和fileencoding是vim中的两个选项。有关详细信息,请阅读帮助文档。

如果您的文件编码为UTF-8,最简单的方法是设置encoding=utf-8fileencoding=utf-8

您可以在vimrc中添加这些行,使其成为默认编码选项。

答案 1 :(得分:0)

简短的回答:我有一个类似的问题,国际字符显示为▒,并由

修复
:set termencoding=utf-8

更长的答案:以下是三个相关设置。通常他们会自动做正确的事,但如果他们不这样做,你可以设置它们。

  
      
  • :设置编码 - 设置用于读取文件的编码
  •   
  • :设置fileencoding - 设置保存文件时使用的编码
  •   
  • :设置termencoding - 设置用于向终端显示字符的编码
  •   

例如,如果文件是UTF-8但是Vim将其读作Latin1,并且同时您的终端是UTF-8但是Vim正在将该端口写为Latin1,则可能会出现您所描述的奇怪结果。在这种情况下,即使在引擎盖下一切都是错误的,角色也可能看起来正确。您可以将光标放在相关字符上并按ga查找其编码值来检查此假设。