vim编码:拉丁1和utf-8

vim编码:拉丁1和utf-8,vim,character-encoding,Vim,Character Encoding,我的问题是: 当我打开文件时,我从vim收到以下消息: "myfilename.sql" [converted] 78565L, 10487381C 如果我做了:设置我得到: Options backspace=2 colorcolumn=+1 formatoptions=qc scrolloff=15 smartindent textwidth=80 visualbell backup

我的问题是:

  • 当我打开文件时,我从vim收到以下消息:

    "myfilename.sql" [converted] 78565L, 10487381C
    
  • 如果我做了
    :设置
    我得到:

    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
    
    --- 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
    ,每当我想重新打开它时,没有任何改变,我仍然必须做所有这些来获得一个具有良好口音的更合适的显示

  • 从现在起,我唯一想做的就是保存它,这样我就可以重新打开它,而无需做所有这些来确保它正确。我该怎么办


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

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


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

简短回答:我在国际字符显示为时遇到了类似的问题▒, 它是由

:set termencoding=utf-8
详细回答:以下是三个相关设置。通常他们会自动做正确的事情,但如果他们不做,你可以设置他们

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

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

当您首先
:set encoding=utf8
然后
:e++enc=latin1 filename
时会发生什么?这不是问题,请告诉我您使用的字体是什么?@源代码Pro ExtraLight 12点为什么?@IngoKarkat它不起作用:我收到的文本像place situÃe avant ou après啊,所以您的文件不是拉丁文,而是utf-8。所以,让我们试试
:设置encoding=utf8
,然后
:e++enc=utf-8 filename