字符集、vi(vim)和secureCRT的复杂性

字符集、vi(vim)和secureCRT的复杂性,c,character-encoding,vi,sys,C,Character Encoding,Vi,Sys,在编程时,有关字符集的问题总是让我感到困惑,特别是当我的编程环境与生产环境不同时。 我使用secureCRT作为终端工具。我可以调整选项→ 会话选项→ 外表→ 字符编码仅在与内容的字符集一致时才正确显示内容。但是,当使用vi在secureCRT中输入/编辑/创建某些内容时,它会变得复杂 有3个变量: 我的linux服务器的$LANG环境变量 我的工作计算机的$LANG环境变量 windows和secureCRT正在其上运行 secureCRT设置 选项→ 会话选项→ 外表→ 字符编码 如

在编程时,有关字符集的问题总是让我感到困惑,特别是当我的编程环境与生产环境不同时。 我使用secureCRT作为终端工具。我可以调整
选项→ 会话选项→ 外表→ 字符编码
仅在与内容的字符集一致时才正确显示内容。但是,当使用vi在secureCRT中输入/编辑/创建某些内容时,它会变得复杂

有3个变量:
  • 我的linux服务器的
    $LANG
    环境变量
  • 我的工作计算机的
    $LANG
    环境变量
    • windows和secureCRT正在其上运行
  • secureCRT设置
    • 选项→ 会话选项→ 外表→ 字符编码
  • 如果这三个变量不一致,那么我在vi(vim)中键入的任何汉字都将显示为一个乱体(即a=UTF-8,B=GBK,C=GBK(GBK表示中文))。这相当复杂。vi接受来自myime(即谷歌中文IME)的字节,这些字节对于GBK(变量B)中的汉字是正确的。但是,secureCRT根据GBK(变量C)将这些字节显示为字符。我的问题是为什么它会错误地显示它们

    如果我绕过vi(vim),但使用相同的A、B、C变量集(即,如果我在windows中创建一个GBK文件并将其上载到我的服务器),然后使用vi(或更多/更少/cat)该文件,所有字符都会正确显示。使用vi创建一些中文内容与使用vi只显示文件内容有什么区别?当我用输入法输入vi时发生了什么


    我认为这个问题对于我们彻底理解charset/font非常有用。非常感谢您对这一点的解释。

    即使我的linux服务器的LANG变量是utf8,但vi只从IME中获取字节,它不会根据utf8字符集转换这些字节,因为vi(vim)不知道“输入字节在gbk流中,我将转换为utf8”-它没有关于IME使用哪个字符集的信息,感谢您的排版,它只接受字节,并在screenConner中显示它们。遗憾的是,没有人对这个主题感兴趣
    :echo&encoding
    显示了什么?