如何修复 PuTTY 显示乱码?

Uwe*_*eim 92 windows ubuntu putty

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

在此处输入图片说明

即它:

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

我使用 Mac OS X 的终端和 SHH 连接到同一个 Ubuntu 服务器,并且没有出现这些屏幕乱码(即一切看起来和工作正常)。我已经尝试使用 PuTTY 中的字体设置,将其从 Courier New 更改为 Consolas,但没有成功。

因此,我的问题是:

如何配置 PuTTY 以正确显示特殊字符而不是重复绘制/覆盖屏幕线?

Mic*_*ton 80

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

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

locale
Run Code Online (Sandbox Code Playgroud)

这应该返回如下内容:

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=
Run Code Online (Sandbox Code Playgroud)

因此,请检查翻译下的 PuTTY 设置,并确保您已UTF-8设置为字符集。

PuTTY 重新配置

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

  • 这在所有情况下都不够。您还应该将以下变量导出到您的环境:`NCURSES_NO_UTF8_ACS=1` [[更多信息](http://superuser.com/q/278286/208988)] (16认同)
  • 如果语言环境返回类似“POSIX”的内容,请在命令行发出“update-locale LANG=en_US.utf8” - 请参阅 https://www.thomas-krenn.com/de/wiki/Locales_unter_Ubuntu_konfigurieren (4认同)
  • 如果 `locale` 返回 `POSIX`,您可能在 sshd 配置中禁用了 usePAM (2认同)

Dan*_*ski 38

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

在此处输入图片说明

  • 优秀。很容易,它的工作原理。(至少在 Debian/Ubuntu 上是这样。) (2认同)

小智 16

15 年后,我又生气了,又用谷歌搜索了一下,找到了这个,选择了

更改设置 ?窗户 ?翻译 ?远程字符集?“使用字体编码”

并修复了它。


小智 13

此外,如果未正确配置 UTF-8,您可以将其作为mc -ac运行。

学分:http : //blog.acsystem.sk/linux/midnight-commander-utf8-line-drawing-characters-problem


小智 10

两个基本因素是腻子中的窗口/翻译 UTF-8 和 Linux 中的区域设置,如此处和许多其他地方的说明。

此外,在 putty 中将Connection/Data/Terminal-type字符串设置为putty和/或在 Linux 中设置为export NCURSES_NO_UTF8_ACS=1. 这两个也是多处提到的。

但是:您可能仍然会遇到某些字符的块,因为像 Courier 和 Lucida Console 这样的默认字体没有所有的 Unicode 字符。下载并安装http://dejavu-fonts.org/wiki/Download,并设置 putty 使用它。

最后一个技巧对我来说是必要的noping(推荐!)显示所有图形字符。

  • `export NCURSES_NO_UTF8_ACS=1` 对我来说效果最好。我只需要记住在运行 `iftop` 时使用 `sudo` 上的 `-E` 选项来保持该环境设置。`sudo -E iftop` (3认同)

小智 9

对于那些最终来到这里的可怜的 VMS 老家伙们:

腻子?窗户 ?翻译 ?远程字符集 ? DEC-MCS

为我工作。


小智 8

窗户 ?翻译 ?“即使在 UTF-8 模式下也能启用 VT100 线图”。

这修复了我mcwavemon我的显示。

在此处输入图片说明


小智 7

在我的情况下(Ubuntu 14.04),问题是由于缺少

UsePAM yes    
Run Code Online (Sandbox Code Playgroud)

/etc/ssh/sshd_config 中的条目作为 /etc/pam.d/sshd pam 配置默认负责将 /etc/default/locale 加载到用户环境中。


小智 6

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

跑步:

mc -ac
Run Code Online (Sandbox Code Playgroud)

正在解决问题(但不完全),我正在寻找完整的解决方案。

在阅读了许多建议后,我终于找到了解决我问题的建议。

在终端运行时:

locale
Run Code Online (Sandbox Code Playgroud)

验证您设置的语言环境。我有默认的C语言环境。

验证所有安装的区域设置运行 locale -a

我有例如:

C
C.UTF-8
POSIX
Run Code Online (Sandbox Code Playgroud)

默认情况下。

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

export LANG="C.UTF-8"
Run Code Online (Sandbox Code Playgroud)

您显然可以将其添加到.bashrc您的个人资料中以使其自动设置。