inn*_*naM 99 vim gvim character-encoding
假设我正在用 vim(或 gvim)编辑一些文件。我不知道文件的编码,我想知道它是 UTF-8 还是 ISO-8859-1 或其他格式?我可以以某种方式告诉 vim 向我展示使用的编码吗?
jti*_*man 116
fileencoding 设置显示当前缓冲区的编码:
:set fileencoding
fileencoding=utf8
Run Code Online (Sandbox Code Playgroud)
确实没有一种通用的方法来确定纯文本文件的编码,因为该信息没有保存在文件本身中 - 除了 UTF-8 文件,在那里你有一个所谓的 BOM,它表示编码。这就是 xml 和 html 文件具有字符集元标记的原因。
您可以使用“编码”设置强制执行特定编码。有关编辑器如何处理这些设置的信息:help encoding,请参阅:help fileencodingVim 中的和。您还可以向 vimrc 添加多个文件编码设置,让 vim 尝试根据列出的设置进行检测。
dot*_*hen 17
请注意,文件的编码并未在文件中的任何地方明确说明。因此,VIM 和其他应用程序必须猜测编码。这样做的规范方法是使用chardet应用程序,它可以在 VIM 中运行,如下所示:
:!chardet %
Run Code Online (Sandbox Code Playgroud)
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内部。
| 归档时间: |
|
| 查看次数: |
90956 次 |
| 最近记录: |