最近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是正确的,也还是会乱码:
发给客服喜提捉虫小能手奖