使用PuTTY从Windows 7 PC通过SSH连接到Ubuntu服务器时,出现一些屏幕错误:



它:


在Midnight Commander(MC)中“双击”选择。
其他元素(如线元素)被绘制为错误的字符(例如“â”而不是“ |”)。

我从Mac OS X通过终端和SHH连接到同一台Ubuntu服务器,但没有出现这些屏幕乱码(即,所有外观和正常工作)。我已经尝试过在PuTTY中使用字体设置,将其从Courier New更改为Consolas,但是没有运气。正确显示特殊字符而不是重复绘制/覆盖屏幕线?

评论

使用SecureCRT:选择选项->会话选项->终端->外观->字符编码->选择:UTF-8。希望能帮助像我这样的人!

#1 楼

您几乎可以肯定在PuTTY设置中设置了错误的字符集。

通过运行以下命令在远程系统上验证字符集:

locale


这应该返回类似以下内容的内容:

LANG=de_DE.UTF-8
LC_CTYPE="de_DE.UTF-8"
LC_NUMERIC="de_DE.UTF-8"
LC_TIME="de_DE.UTF-8"
LC_COLLATE="de_DE.UTF-8"
LC_MONETARY="de_DE.UTF-8"
LC_MESSAGES="de_DE.UTF-8"
LC_PAPER="de_DE.UTF-8"
LC_NAME="de_DE.UTF-8"
LC_ADDRESS="de_DE.UTF-8"
LC_TELEPHONE="de_DE.UTF-8"
LC_MEASUREMENT="de_DE.UTF-8"
LC_IDENTIFICATION="de_DE.UTF-8"
LC_ALL=


,因此请检查Translation下的PuTTY设置,并确保已将UTF-8设置为字符集。 />

您可能还需要调整线条绘制设置,但这不太可能。

评论


在所有情况下,这还不够。您还应该将以下变量导出到您的环境:NCURSES_NO_UTF8_ACS = 1 [更多信息]

–彼得·尤基维兹(Piotr Jurkiewicz)
2014-12-14 22:53



如果语言环境返回POSIX,则您可能在sshd配置中禁用了usePAM

–user2693017
15年7月20日在19:59

如果语言环境返回类似POSIX的信息,请在命令行中发出update-locale LANG = en_US.utf8-请参阅thomas-krenn.com/de/wiki/Locales_unter_Ubuntu_konfigurieren

– koppor
15年12月19日在11:05

@ michael-hampton,我的系统配置为使用en_US.UTF-8。我看到不同的地方对语言环境有不同的看法。有些地方提到我应该使用en_US,而其他地方提到我应该使用de_DE。我相信,我看到grep和其他核心实用程序使用语言环境设置字符集之前。改变这一点意味着什么?

–alpha_989
17年11月11日21:00

@koppor,您提到将语言环境更改为en_US,而michael提到了将语言环境更改为de_DE。哪一个是正确的?

–alpha_989
17年11月11日在21:02

#2 楼

即使我使用UTF-8作为字符集,我也对Debian的aptitude程序有问题。对我有用的是将“连接>数据>终端类型字符串”设置为“ putty”而不是“ xterm”-显然,Putty忽略了切换到绘图模式的字符序列: .org.uk /〜sgtatham / putty / wishlist / utf8-plus-vt100.html



评论


优秀的。简单并且有效。 (至少在Debian / Ubuntu上是如此。)

–内特
15年4月29日在22:46

这在PuTTY上运行良好,但随后引入了另一个(更次要的)问题:更改遥控窗口标题不再起作用。

– ADTC
16年6月19日在8:24

优秀的。解决了Ubuntu Artful上ncmpc的问题。

–weberjn
18年1月8日在23:19

#3 楼

另外,如果未正确配置UTF-8,则可以将其作为mc -ac。

信用:http://blog.acsystem.sk/linux/midnight-commander-utf8-line-绘图字符问题

#4 楼

15年后,我再次感到恼火,再次搜索了一下,选择了

更改设置→窗口→翻译→远程字符集→“使用字体编码” br />
并修复了它。

#5 楼

两个基本因素是在腻子中的Window / Translation UTF-8和Linux中的语言环境设置,如此处和许多其他地方所指示。类型的字符串输入腻子,和/或在Linux中输入export NCURSES_NO_UTF8_ACS=1。这两个地方也提到了很多地方。

但是:由于某些字体(例如Courier和Lucida Console)没有所有的Unicode字符,因此您可能仍然会遇到某些字符的块。下载并安装http://dejavu-fonts.org/wiki/Download,并设置腻子以使用它。字符。

评论


export NCURSES_NO_UTF8_ACS = 1最适合我。我只需要记住在运行iftop来保持该环境设置时在sudo上使用-E选项。须藤-E iftop

–热火约翰
18 Sep 12'在20:07

不再需要NCURSES_NO_UTF8_ACS = 1。有关如何在PuTTY 0.71+中启用VT100绘图字符的信息,请参见superuser.com/questions/278286/…。

– Tehnicaorg
20/12/27在20:47

#6 楼

对于所有可怜的VMS老家伙们来说,它们都是:对我来说。

#7 楼

就我而言(Ubuntu 14.04),此问题是由于/ etc / sam / sshd_config中的/etc/pam.d/sshd pam配置为默认情况下负责将/ etc / default / locale加载到用户环境中。

评论


这为我解决了。

–马丁
18/12/16在7:21

#8 楼

在使用Docker机器时(在语言环境和系统管理员设置的机器上),我一直在寻找许多解决方案。在我的腻子中,一切都很好(我有UTF-8),我也在使用其他SSH客户端,并且遇到了完全相同的问题。

运行: />正在解决问题(但还没有完全解决),我一直在寻找完整的解决方案。

看了很多建议之后,我终于找到了解决我问题的方法。在终端中运行时:

mc -ac


验证设置的语言环境。默认情况下,我使用C语言环境。

要验证所有安装的语言环境,请运行locale -a

我有例如:

locale


默认情况下。

解决方案是使用LANG语言环境导出C.UTF-8变量,如下所示:

C
C.UTF-8
POSIX

将其自动设置在您的个人资料中。

评论


更改LANG变量有哪些副作用?如果您已经拥有C.UTF-8作为LANG,为什么还要再次将其导出?

–alpha_989
17年11月11日在22:15

#9 楼

窗口→翻译→“即使在UTF-8模式下也启用VT100线条图”。

这对我来说可以同时显示mcwavemon



评论


是的,这可以在不破坏mc的情况下解决iptraf-ng的问题。 (终端类型字符串设置为xterm或xterm-256color)。另请参见superuser.com/questions/278286/…

– Tehnicaorg
20/12/27在20:44

#10 楼

我必须在“窗口”→“翻译”页面上将字符集设置为:


ISO-8859-1:1998(西欧拉丁1)


然后,直到那时,线条绘制字符才正确显示。

#11 楼

可能与pam相关的另一个原因可能会影响具有powerbroker / pbis / like身份验证的主机。

grep /etc/pam.d出现“ lsass”:

br />
如果您在输出中看到类似以下内容的内容:

grep -r lsass /etc/pam.d


,那么这可能是问题的根本原因。快速解决方案是用pam_lsass模块旁边的“可选”替换“足够”,使其看起来像:

/etc/pam.d/common-session:session       sufficient        pam_lsass.so

或其他具有类似条目的文件-可能很少),在装入pam_env之前/etc/pam.d/sshd会包含该文件,因此,如果在pam_env之前完成了pam模块的处理,则/ etc / default / locale未在用户环境中加载,并且字符乱码。

#12 楼

如许多答案中所述:

Putty>窗口>翻译>远程字符集> UTF8

是解决方案。但是请不要忘记去会话>默认设置,然后点击保存。将不会显示任何消息来确认成功,但实际上它将成为默认设置:



#13 楼

以这种方式运行mc(将语言环境设置为en)对我有用:

$ LC_ALL=en mc


#14 楼

对我有用的是“连接,数据,终端类型的字符串= ansi”加上“窗口,翻译,远程字符集=使用字体编码”,然后是unix上的set TERM=ansi

PS。如果您被迫使用MS-Word,请记住要关闭智能引号。

评论


您还应该提到,您没有连接到现代的LInux系统,而是连接了一个较旧的非Linux系统。

–迈克尔·汉普顿
17 Mar 10 '17 at 15:50



#15 楼

我的问题是将腻子配置为UTF-8,但是远程系统是ISO-8859-1

西欧,所以我更改了腻子,一切正常。 />腻子截图