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

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

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

此应用程序由 Javascript 激活。阻止 nettleser 启动 JavaScript 或在您未使用的 nettleser 中激活 JavaScript。

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

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

root@foo:~/www/pltest# file --mime-encoding index.php
index.php: iso-8859-1

并且 PuTTY 在设置->窗口->翻译中设置为需要 ISO-8859-1。因此唯一的问题可能是 Debian。如果我尝试在控制台中输入上述任何字符,就会出现随机字符:

root@foo:~/www/pltest# ���������

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


解决了(部分地)!显然,显示符号很简单,只需打印出 /etc/locale.alias,在列表中找到我的语言环境,并将相应的语言代码(在我的情况下为 nb_NO.ISO-8859-1)设置为 LANG 环境变量即可。但是,我仍然无法类型字符进入 PuTTY 窗口。每次我尝试时都会听到窗口错误“叮”。

有任何想法吗?

答案1

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

  • 1)在 Putty 中(您已经这样做了)
  • 2)在远程系统上(通常通过将 LANG 环境变量设置为合适的语言环境)

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

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

为了解决您的问题:

您显然已经通过在 Putty 中设置相同的编码并使用 LANG 解决了 1) 和 2) 问题。现在,只要 vim 知道文件采用哪种编码(通过自动检测,或者:set fileencoding=UTF-8在 vim 中执行等操作),就可以在 vim 中编辑包含非 ASCII 字符的文件。

至于“输入非 ASCII 字符时出现叮声”:您可能需要将其放入set input-meta on您的~/.inputrc(这会告诉 readline 库并因此告诉 bash 您想要输入非 ASCII 内容) - 但大多数现代 Linux 发行版不再需要这个。

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

最后说一句:

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

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

答案2

好的,我在基于 Debian 的系统(Ubuntu Server)上尝试将非 ASCII 字符输入 Putty 时遇到了同样的问题。我的修复完全有效,如下所示:

1) 在 Putty 的“设置”->“窗口”->“翻译”下将字符集更改为 UTF-8
2) 确认服务器上的 $LANG 环境变量设置为 en_us.UTF-8
3) 使用以下选项创建 ~/.inputrc:

set input-meta on
set output-meta on
set convert-meta off 
set enable-meta-key on

4)注销,重新登录(不确定是否有必要)
5)现在我可以将非 ASCII 字符复制/粘贴到终端中,并且可以成功使用元键手动输入字符,如:ƒ、å、Ü...

请参阅以下“手册页”,其中更详细地描述了我在步骤 3 中使用的选项:http://www.gnu.org/software/bash/manual/html_node/Readline-Init-File-Syntax.html

希望这对某人有帮助。干杯。

相关内容