当 ssh 连接到 OS X 计算机时,ls 无法正确显示 utf8 编码的文件名

当 ssh 连接到 OS X 计算机时,ls 无法正确显示 utf8 编码的文件名

我在这里试图解决的问题是,在与 OS X 机器的 ssh 会话终端中,命令的输出ls无法正确显示文件名中的 utf8 编码中文字符(显示类似 的内容???)。我使用的 ssh 客户端是Windows 上的securecrtputty(都配置为使用 utf8 编码)。它们都存在此问题。另一方面,文件内容中的 utf8 字符可以正确显示(如通过vimcat),并且 bash 的自动完成功能也可以正确显示文件名中的 utf8 字符(当有多个候选项时在候选项列表中,以及当只有一个候选项时在自动完成的文件名中)。

所以问题是,如何ls在与 OS X 机器的 ssh 会话终端中正确显示 utf8 编码的文件名?

答案1

此问题通常是由于环境变量引起的,因此请先检查一下。输入env即可获得结果。在我的情况下,set LANG( export LANG=en_US.UTF-8) 就可以正常工作。

答案2

对于 Putty:在 OSX 目标机器上,查找 LC_CTYPE 环境变量 ( echo $LC_CTYPE)。它应该是UTF-8或者类似英文版.UTF-8。(如果只有“en_EN”之类的内容,则设置为 ISO。在这种情况下,将其更改为英文版.UTF-8通过添加export LC_CTYPE=en_EN.UTF-8到您的$HOME/.bash_profile)。在 Windows 机器上的 Putty 中,转到配置 -> 窗口/翻译,然后选择与 OSX 机器上的环境变量相同的字符集。如果服务器上的环境变量和 Putty 设置相同,它应该可以正常工作。

相关内容