lala.im:Debian11解决SSH中文乱码

運維技術·lala.im · 2021-10-14 · 113 人浏览

原文地址:https://lala.im/8090.html,請支持原作者!該處僅作轉載。

最近upcloud新上了debian11的系统模板,前段时间我开了一台机器发现nano编辑器显示中文是乱码。
我手上还有几台debian11的机器只有upcloud的有问题,所以应该是upcloud提供的系统模板有问题,不是系统本身的问题。
查看locale,就可以发现问题了,正常情况下一般都是配置为en_US.UTF-8,但是这里回显的是C:

範例
然后按照官方的wiki来操作:https://wiki.debian.org/Locale,执行如下命令:

dpkg-reconfigure locales

选中en_US.UTF-8:

範例
同时设置默认的locale环境变量:

範例
到这里,按道理来说应该就正常了才对,但是通过locale命令查看变量还是之前的C没有改变。
查看之前dpkg-reconfigure的配置有没有生效,确实是生效了的。。。这就奇了怪了~

root@debian-1cpu-1gb-sg-sin1:~# cat /etc/locale.gen | grep en_US.UTF-8
en_US.UTF-8 UTF-8
root@debian-1cpu-1gb-sg-sin1:~# cat /etc/default/locale
LANG=en_US.UTF-8

后来突然想到会不会是用户账户配置下面还定义了什么变量?果然在.profile下面发现了这个鬼玩意。。。

範例
注释掉这两行:

#LANG=C
#LANGUAGE=C

使其生效:

source ~/.profile

退出ssh重新登录,如果还不生效,重启大法:

systemctl reboot

测试一下:

範例
以上是提供一种解决这类乱码问题的思路,实际上很多种因素都能够导致这种乱码问题的发生。
往往不仅仅只有中文会乱码,韩文和日文也会。一般看到这几种语言都乱码的话,就要看看系统的locale是不是配置为utf8。
其次是ssh客户端,比如xshell上面也有语言配置,这里的配置也要确保是utf8:

範例
如果把xshell这里配置为gbk,即便系统内的locale是正确的,也还是会乱码:

範例

運維技術 lala.im
Theme Jasmine by Kent Liao