我不明白为什么 VIM 中有 encoding
和 fileencoding
。
据我所知,文件就像一个字节数组。当我们创建一个文本文件时,我们创建了一个字符(或符号)数组,并用编码 X 将该字符数组编码为一个字节数组,并将该字节数组保存到磁盘。在文本编辑器中读取时,对编码为 X 的字节数组进行解码,重建原始字符数组,并根据字体以图形显示每个字符。在这个过程中,只涉及 一个 编码。
在 VIM set encoding and fileencoding utf-8 中,它指的是 wiki of VIM about working with unicode ,
encoding sets how vim shall represent characters internally. Utf-8 is necessary for most flavors of Unicode.
fileencoding sets the encoding for a particular file (local to buffer)
“ vim 应如何在内部表示字符 ” vs “ 特定文件的编码 ”...重新编码 Unicode 与 UTF-8?如果是这样,用户为什么要为前者而烦恼?
任何提示?
最佳答案
你是对的;大多数程序都有一个固定的内部编码(说到 C 数据类型,要么是 char
,它主要使用底层语言环境,可能无法表示所有字符,要么是 UTF-8;要么是 wchar
(宽字符),它可以表示 Unicode范围)。选择主要由编程语言和可用 API 驱动(因为必须来回转换既乏味又效率低下)。
Vim,因为它支持多种平台(从开发开始的旧 Amiga 开始)并且面向程序员和高级用户,允许配置内部表示。
启发式
'fileencodings'
识别编码,或者明确指定它。 'encoding'
。使用 utf-8
,您就安全了。 'termencoding'
。 如您所见,虽然初学者可能会感到困惑,但实际上您拥有所有可用的功能!
关于vim - vim 或其他地方文件编码和编码的基本原理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22044869/