如何在 PuTTY/Debian 中启用 [Æ, Ø, Å] 等字符?

Hub*_*bro 2 linux debian vim putty encoding

我通过 PuTTY 使用 VIM 在我的开发服务器上工作,但是当我必须处理包含标题中提到的字符的文件时,它变得相当困难。它不仅让 VIM 看起来像这样

Denne applikasjonen krever 在 Javascript er aktivert。Bruk en nettleser som støtter JavaScript eller aktiver JavaScript i din nÃ¥vÃ|rende nettleser。

但它也完全搞砸了 VIM,使视觉插入符号相对于我打字时出现的文本位置完全随机。

我正在编辑的文件使用 ISO-8859-1 编码

root@foo:~/www/pltest# file --mime-encoding index.php
index.php: iso-8859-1
Run Code Online (Sandbox Code Playgroud)

PuTTY 在设置->窗口->翻译中设置为期望 ISO-8859-1。所以唯一的问题可能是 Debian。如果我尝试在控制台中输入上述任何字符,随机出现:

root@foo:~/www/pltest# ���������
Run Code Online (Sandbox Code Playgroud)

知道如何让 Debian 允许 ISO-8859-1 符号吗?


解决了(部分)!显然,显示符号就像打印 /etc/locale.alias 一样简单,在列表中找到我的语言环境并将相应的语言代码(在我的例子中为 nb_NO.ISO-8859-1)设置为 LANG 环境变量。但是,我仍然无法在 PuTTY 窗口中输入字符。每当我尝试时,我都会听到 Windows 错误“叮”。

有任何想法吗?

sle*_*ske 6

为了使非 ASCII 字符起作用,所有涉及的程序必须使用相同的字符编码。需要设置编码:

  • 1)在腻子(你已经做到了)
  • 2) 在远程系统上(通常通过将 LANG 环境变量设置为合适的语言环境)

然后在控制台上使用非 ASCII 应该可以工作。

vim 的设置(大部分)与此无关。vim 对它编辑的文件的编码有自己的内部设置,并且会自动重新编码文本以适合系统设置(即使用 LANG 设置的区域设置)。

要解决您的问题:

通过在 Putty 中设置相同的编码并使用 LANG,您显然已经处理了 1) 和 2)。现在编辑具有非 ASCII 字符的文件应该可以在 vim 中工作,前提是 vim 知道文件具有哪种编码(通过自动检测,或通过:set fileencoding=UTF-8在 vim 中执行等操作)。

至于说“得到一个定当输入非ASCII字符”:你可能需要把set input-meta on到你~/.inputrc(这告诉readline库,从而庆典要键入非ASCII东西) -但最现代的Linux发行版应该不再需要这个。

尝试查看 vim 等其他程序是否接受非 ASCII 的内容 - 这应该会告诉我们问题出在哪里。

最后一句话:

虽然将语言环境设置为使用 ISO 8859-1 确实有效,但从长远来看,使用 UTF-8 通常更好。UTF-8 几乎适用于任何语言,而不仅仅是西方语言,并且正在迅速成为现代 Linux 发行版的标准。

请注意,您仍然可以在 vim 中使用 ISO 编码的文件,因为 vim 可以自动转码(它通常甚至会自动检测文件不是 UTF-8 格式)。