Answers:
fileencoding设置显示当前缓冲区的编码:
:set fileencoding
fileencoding=utf8
实际上,没有一种确定明文文件编码的通用方法,因为该信息并不保存在文件本身中-除了UTF-8文件外,在该文件中有一个所谓的BOM指示编码。这就是xml和html文件具有字符集元标记的原因。
您可以使用'encoding'设置实施特定的编码。有关编辑器如何处理这些设置的信息:help encoding
,请参见and :help fileencoding
在Vim中。您也可以在vimrc中添加几个文件编码设置,以使vim尝试根据列出的设置进行检测。
请注意,文件的编码未在文件的任何位置明确声明。因此,VIM和其他应用程序必须猜测编码。规范的实现方式是使用chardet
应用程序,它可以在VIM内部运行,如下所示:
:!chardet %
jtimberman提供的答案将向您显示当前缓冲区的编码,该编码可能与磁盘上的文件的编码不同。因此,您会注意到chardet
有时会显示与VIM不同的编码,特别是如果您已将VIM配置为始终使用特定的编码(即UTF-8)。
令人高兴的chardet
是,它为猜测提供了可信度得分,而如果\ x7F(ASCII 127)以上没有太多字符,则VIM在猜测编码方面可能(通常是错误的)。例如,将单个א
文件添加到一个较长的PHP代码文件中会使chardet
文件ISO-8859-2
的置信度为0.72,而添加稍长的短语שלום, עולם!
将给UTF-8提供0.99的置信度。在这两种情况下,set fileencoding?
显示的UTF-8
都不是因为磁盘上的文件是UTF-8,而是因为VIM配置为在内部使用UTF-8。
chardet <file>
。尽管如此,还是个好建议。
我发现了:https : //vim.fandom.com/wiki/Reloading_a_file_using_a_different_encoding
如果Vim无法检测到正确的编码,则可以使用其他编码重新加载文件:
:e ++enc=<encoding>
encoding
可能在哪里cp850, ISO-8859-1, UTF-8, ...
您可以使用dotancohen的建议file yourfilename
来查找编码或chardetect
(由Linux发行版提供python-chardet
或uchardet
取决于Linux发行版)。