1

在编程时,关于 charset 的问题总是让我感到困惑,尤其是当我的编程环境与生产环境不同时。我使用secureCRT 作为我的终端工具。只有与内容的字符集一致时,我才能调整Options → Session options → Appearance → Character encoding以正确显示内容。但是当使用 vi 在secureCRT 中输入/编辑/创建一些东西时,它变得复杂了。

有3个变量:

  1. 我的 linux 服务器的$LANG环境变量
  2. $LANG我的工作计算机 的环境变量
    • windows和secureCRT正在上面运行
  3. 安全 CRT 设置
    • Options → Session options → Appearance → Character encoding

如果这 3 个变量不统一,那么我在 vi(vim) 中输入的任何汉字都会显示为一团糟(即 A=UTF-8,B=GBK,C=GBK(GBK 表示中文))。这是相当复杂的。vi 接受来自我的 IME(即谷歌中文 IME)的字节,这些字节对于 GBK(变量 B)中的中文字符是正确的。但是,secureCRT 根据 GBK(变量 C)将这些字节显示为字符。我的问题是为什么它显示不正确?

如果我绕过 vi(vim) 但使用同一组 A、B、C 变量(即,如果我在 Windows 中创建一个 GBK 文件并将其上传到我的服务器)然后 vi(或 more/less/cat)该文件,所有字符显示正确。使用 vi 创建一些中文内容和使用 vi 仅显示文件内容有什么区别?当我使用 IME 输入 vi 时发生了什么?

我认为这个问题对我们彻底理解字符集/字体非常有用。非常感谢您对此有所了解。

4

0 回答 0