vim - vim 或其他地方文件编码和编码的基本原理

标签 vim unicode encoding utf-8

我不明白为什么 VIM 中有 encodingfileencoding

据我所知,文件就像一个字节数组。当我们创建一个文本文件时,我们创建了一个字符(或符号)数组,并用编码 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 开始)并且面向程序员和高级用户,允许配置内部表示。

启发式

  • 只要能识别所有字符就不用管了。
  • 如果某些文件看起来不对,你必须教 Vim 通过 'fileencodings' 识别编码,或者明确指定它。
  • 如果某些字符显示不正确,则需要切换 'encoding' 。使用 utf-8 ,您就安全了。
  • 如果您仅在终端中遇到问题,请使用 'termencoding'

  • 如您所见,虽然初学者可能会感到困惑,但实际上您拥有所有可用的功能!

    关于vim - vim 或其他地方文件编码和编码的基本原理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22044869/

    相关文章:

    perl - 使用 perl 的 Vim 语法折叠

    vim - 如何从 Vim 中删除每行的最后 3 个单词?

    python - 如何防止 vim 破坏字符串文字?

    unicode - 简单的非ascii字符串让Django头疼

    Python:在文件中写入unicode值

    regex - VIM 搜索和替换正则表达式

    java - Unicode 未在 Java 中进行翻译

    java - 从 javascript 转义 Unicode 到 Java Unicode 的转换

    php - 如何使用 PHP 解码 MySQL 文本?

    java - 双击jar并在Mac上的命令提示符下运行同一jar时的不同行为