CentOS Linux 远程终端ssh乱码问题

CentOSLinux远程终端ssh乱码问题

2011/11/14ssh,乱码疑难杂症聚合评论6,356

我们经常碰到Linux乱码问题。尤其是碰到网页上传个中文文件名的文件,ssh登陆到linux一看全乱码想删除都不行。很郁闷的。如下图所示中文文件名全都是显示问号了(这个乱码由于你的编码设置不同,显示的也不太一样)

CentosLinux远程终端ssh乱码问题

还有一个就是vim的乱码

CentosLinux远程终端ssh乱码问题

解决办法:

首先需要给linux安装中文支持。这里以CentOS为例,所以采用yum安装

#yumgroupinstallchinese-support

然后再设置linux系统的i18n文件,位置在/etc/sysconfig/i18n

内容如下

LANG="zh_CN.GB18030"

SUPPORTED="zh_CN.UTF-8:zh_CN.GBK:zh_CN.GB18030:zh_CN:zh:en_US.UTF-8:en_US:en"

SYSFONT="latarcyrheb-sun16"

接着设置LC_ALL环境变量,在/etc/profile文件里加入

exportLC_ALL=zh_CN.GB18030

全部设置好后,重启系统。再次登陆后,用如下命令查看

-bash-3.2#locale

LANG=zh_CN.GB18030

LC_CTYPE="zh_CN.GB18030"

LC_NUMERIC="zh_CN.GB18030"

LC_TIME="zh_CN.GB18030"

LC_COLLATE="zh_CN.GB18030"

LC_MONETARY="zh_CN.GB18030"

LC_MESSAGES="zh_CN.GB18030"

LC_PAPER="zh_CN.GB18030"

LC_name="zh_CN.GB18030"

LC_ADDRESS="zh_CN.GB18030"

LC_TELEPHONE="zh_CN.GB18030"

LC_MEASUREMENT="zh_CN.GB18030"

LC_IDENTIFICATION="zh_CN.GB18030"

LC_ALL=zh_CN.GB18030

完成以上操作,应该就可以正常显示中文文件名字了。不过这个只是linux没有问题了,我们的ssh客户端还需要支持才可以。我一般使用Putty来当做ssh客户端,下面就以putty为例子进行设置。先设置使用的字体,选择windows->Appearance,弹出的字体界面里选择“新宋体”,字符集选择“CHINESE_GB2312”

CentosLinux远程终端ssh乱码问题

再设置编码

CentosLinux远程终端ssh乱码问题

以上设置完成后,就可以正常显示了。效果如下图所示:

CentosLinux远程终端ssh乱码问题

在命令行输入中文文件名也可以正常使用了。

CentosLinux远程终端ssh乱码问题

到目前为止,ssh下操作中文文件名的问题就彻底解决了。可以正常输入中文文件名来操作了。

下面是vim显示乱码问题,vim一般都是因为文件编码和显示编码的问题引起的乱码。

我们打开文件发现乱码后,采用如下命令

#setencoding=utf-8termencoding=gbk

这样以后,vim也可以正常操作中文了。效果图

CentosLinux远程终端ssh乱码问题

网上看到一些资料说是将i18n的LANG设置为zh_CN.UTF-8,然后LC_ALL也是设置为zh_CN.UTF-8,但是我试验了下,效果并不好(也将putty调整为了utf-8)。但是文件名显示还是乱码。需要用ls--show-control-chars来正常显示,输入中文文件名也不正常。以上只是在putty下使用,也许配合其他ssh客户端效果不太一样。稍后我再添加一些其他客户端效果。

Ubuntu11.10中键盘连续输入相同字符时的问题在Linux下删除行末尾的^M符号方法

延伸阅读

ssh认证系统配置指南说明

如何的退出无响应的SSH连接

LinuxSSH限制IP登录的安全策略方法

Linux使用curl访问https站点时报错汇总

BackTrack5/Ubuntu中root不能使用tab键来补全命令的解决方法

nginx反向代理504错误

相关推荐