使用PuTTY从Windows 7 PC通过SSH连接到Ubuntu服务器时,出现一些屏幕错误:
它:
在Midnight Commander(MC)中“双击”选择。
其他元素(如线元素)被绘制为错误的字符(例如“â”而不是“ |”)。
我从Mac OS X通过终端和SHH连接到同一台Ubuntu服务器,但没有出现这些屏幕乱码(即,所有外观和正常工作)。我已经尝试过在PuTTY中使用字体设置,将其从Courier New更改为Consolas,但是没有运气。正确显示特殊字符而不是重复绘制/覆盖屏幕线?
#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线条图”。这对我来说可以同时显示
mc
和wavemon
。评论
是的,这可以在不破坏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西欧,所以我更改了腻子,一切正常。 />腻子截图
评论
使用SecureCRT:选择选项->会话选项->终端->外观->字符编码->选择:UTF-8。希望能帮助像我这样的人!