点我
点我
文章目录
  1. 1 目标
  2. 2 环境
  3. 3 修改配置
    1. 3.1 服务器编码配置
    2. 3.2 本地配置
    3. 3.3 编码转换
  4. 参考文献

修复ubuntu终端中文显示和输入的问题

我在管理服务器的时候,一般在win下面使用xshell和xftp两个软件,来进行管理和上传文件.不过一直有个头疼的问题:如果文件名是中文的,上传之后,在ftp软件中看到的是正常的,在xshell终端中看到的却是乱码;而且,在xshell中无法输入中文,所以我在vi中修改文件的时候一般只使用英文.

昨晚没事,就查了一下资料,修复了这个问题.

1 目标

本文的目标主要是修复中文文件名乱码和中文输入的问题,本文的目标不是把整个系统的所有语言体系都改成中文,只是单纯的修复中文输入问题和中文文件名显示问题.

2 环境

服务器环境: Ubuntu Server 16.04 lts
本地环境: windows7
软件环境: Xshell 和 Xftp

3 修改配置

与中文编码相关的配置主要包括: 本地编码和服务器编码.我们首先设置服务器端编码:

3.1 服务器编码配置

首先,我们使用xshell连接登录服务器,然后在终端中输入locale命令,得到结果如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$ locale
LANG=
LANGUAGE=C:
LC_CTYPE="POSIX"
LC_NUMERIC="POSIX"
LC_TIME="POSIX"
LC_COLLATE="POSIX"
LC_MONETARY="POSIX"
LC_MESSAGES="POSIX"
LC_PAPER="POSIX"
LC_NAME="POSIX"
LC_ADDRESS="POSIX"
LC_TELEPHONE="POSIX"
LC_MEASUREMENT="POSIX"
LC_IDENTIFICATION="POSIX"
LC_ALL=

各个选项的含义如下:

  • 语言符号及其分类(LC_CTYPE)
  • 数字(LC_NUMERIC)
  • 比较和排序习惯(LC_COLLATE)
  • 时间显示格式(LC_TIME)
  • 货币单位(LC_MONETARY)
  • 信息主要是提示信息,错误信息, 状态信息, 标题, 标签, 按钮和菜单等(LC_MESSAGES)
  • 姓名书写方式(LC_NAME)
  • 地址书写方式(LC_ADDRESS)
  • 电话号码书写方式(LC_TELEPHONE)
  • 度量衡表达方式(LC_MEASUREMENT)
  • 默认纸张尺寸大小(LC_PAPER)
  • 对locale自身包含信息的概述(LC_IDENTIFICATION)。

关于locale更多的信息,请查看Locale-wiki
我们要修复的是中文文件名的显示和中文输入的问题,所以我们接下来只需要设置LC_CTYPE即可.

查看系统支持的编码方式:

1
locale -a

看看输出内容中是否包含zh_CN.utf-8,如果不包含的话,我们需要添加这个配置项

1
sudo locale-gen zh_CN.utf-8

修改后,我的输出内容如下,已经包含zh_CN.utf-8
查看系统支持的编码方式
接下来,修改LC_CTYPE的值,使用export LC_CTYPE='zh_CN.UTF-8',命令来修改.
直接执行export LC_CTYPE='zh_CN.UTF-8'那么只对当前会话有效,
所有用户(永久):修改/etc/profile
当前用户(永久):修改~/.bashrc

建议直接修改/etc/profile文件,这样所有用户都可以使用.
修改完成后,退出登录,重新登录一次,再输入locale命令,可以得到如下输出:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
LANG=
LANGUAGE=C:
LC_CTYPE=zh_CN.UTF-8
LC_NUMERIC="POSIX"
LC_TIME="POSIX"
LC_COLLATE="POSIX"
LC_MONETARY="POSIX"
LC_MESSAGES="POSIX"
LC_PAPER="POSIX"
LC_NAME="POSIX"
LC_ADDRESS="POSIX"
LC_TELEPHONE="POSIX"
LC_MEASUREMENT="POSIX"
LC_IDENTIFICATION="POSIX"
LC_ALL=

应该就可以输入中文了

3.2 本地配置

在windows中,中文的默认编码是GBK,所以为了避免出现在ftp中看着正常,在xshell中看着乱码的问题.我们要修改xftp中的编码方式.打开xftp,文件->属性->选项,勾选上使用UTF-8编码.
修改xftp编码方式

3.3 编码转换

上面的修改完成后,基本可以解决之前提到的目标.新上传的文件肯定是正常的,但是之前上传的文件依旧是乱码,所以我们需要使用工具转换一下.

1
sudo apt-get install convmv

用法很简单:

1
convmv -f GBK -t UTF-8 --notest ./*

其中,-f表示源编码;-t表示目标编码;如果没有--notest选项,这条命令只会检测,不会执行;后面跟着需要操作的文件目录;如果需要递归执行,可以加上-r选项.

打完收工

参考文献

支持一下
扫一扫,试试看
  • 微信扫一扫
  • 支付宝扫一扫