SSH 中不会显示外来字符

SSH 中不会显示外来字符

ssh我在使用远程服务器(我没有管理员访问权限)时遇到一些问题- 具体来说,那里有几个带有韩语和西里尔文字的文件夹。

当我用 显示父文件夹内容时ls,字符被转义为“?”。也许值得注意的是,韩语字符似乎转义的 ? 数量远多于韩国字符的数量。应该在那里。

我知道我正在使用的终端程序可以显示这些字符,因为使用可以sftp完美地显示它们。我尝试过的所有终端都会出现此问题。

机器概要

本地机器:

  • Linux 2.6.32-5-686、i686
  • Debian GNU/Linux 6.0.2(挤压)
  • 拥有管理员权限

远程服务器:

  • Linux 2.6.32-bpo.5-amd64、x86_64
  • Debian GNU/Linux 5.0.8 (lenny)
  • 没有管理员权限,也没有物理权限

我可能错过了一些其他重要的统计数据或一些信息,在这种情况下我深表歉意。我对整个非 Windows 方面的计算相当陌生,所以我几乎不知道我在这里做什么。

答案1

你的语言环境服务器计算机上的信息未正确设置。具体来说,LC_CTYPE指示终端上字符编码的变量设置不正确(或者,我怀疑根本没有)。

在本地终端中,运行locale以查看您的区域设置。您可能会看到(除其他行外)类似的内容LC_CTYPE=en_US.UTF-8;这里重要的是.UTF-8部分,表明UTF-8编码。这是 Unix 世界(及其他世界)中多语言文本事实上的标准编码。

您需要将此信息传递给服务器。如果可行的话,最好的方法是通过 ssh 连接发送区域设置信息。为此,请在 的末尾添加以下行~/.ssh/config

Host *
SendEnv LC_* LANG

这要求AcceptEnv服务器配置中存在合适的指令 ( /etc/ssh/sshd_config)(Debian 上默认如此)。

如果这不起作用,并且您总是从 UTF-8 终端登录服务器,请将该行添加到服务器上的文件(或shell 使用的任何文件)export LC_CTYPE=en_US.UTF-8中。区域设置名称(例如)必须是 提供的名称之一,并且必须具有(或一些细微的变化)。~/.bashrc~/.zshrcen_US.UTF-8locale -a.UTF-8.utf8

相关内容