Linux 修改为简体中文

  • 原创
  • Madman
  • /
  • /
  • 0
  • 1221 次阅读

Synopsis: 通过设置 LANG 和 LC_ALL 两个环境变量来修改 Linux 系统的语言为简体中文,并演示如何解决 GBK 文件名、GBK 文件内容乱码问题

1. 查看当前系统语言及编码方案

如果你在安装 Linux 时,语言及键盘选择的是 English 的话,那么此时系统默认的语言及编码为 en_US.UTF-8,表示语言使用美国英语,编码方案为 UTF-8

[root@CentOS ~]# locale
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=

比如下面的输出中,时间为英文:

[root@CentOS ~]# date
Sat Oct 19 15:53:50 CST 2019

2. 修改为简体中文

如果你想使用中文语言的话,首先需要查看系统支持的语言是否包含中文,正常情况下是有的:

[root@CentOS ~]# locale -a | grep zh
zh_CN
zh_CN.gb18030
zh_CN.gb2312
zh_CN.gbk
zh_CN.utf8
zh_HK
zh_HK.big5hkscs
zh_HK.utf8
zh_SG
zh_SG.gb2312
zh_SG.gbk
zh_SG.utf8
zh_TW
zh_TW.big5
zh_TW.euctw
zh_TW.utf8

那么我们可以设置为 zh_CN.utf8 来使用 简体中文 且默认编码方案还是选择 UTF-8

1. 设置临时环境变量
[root@CentOS ~]# export LANG=zh_CN.utf8
[root@CentOS ~]# export LC_ALL=zh_CN.utf8

2. 查看
[root@CentOS ~]# locale
LANG=zh_CN.utf8
LC_CTYPE="zh_CN.utf8"
LC_NUMERIC="zh_CN.utf8"
LC_TIME="zh_CN.utf8"
LC_COLLATE="zh_CN.utf8"
LC_MONETARY="zh_CN.utf8"
LC_MESSAGES="zh_CN.utf8"
LC_PAPER="zh_CN.utf8"
LC_NAME="zh_CN.utf8"
LC_ADDRESS="zh_CN.utf8"
LC_TELEPHONE="zh_CN.utf8"
LC_MEASUREMENT="zh_CN.utf8"
LC_IDENTIFICATION="zh_CN.utf8"
LC_ALL=zh_CN.utf8

现在系统将使用简体中文了:

[root@CentOS ~]# date
2019年 10月 19日 星期六 15:58:36 CST

上面的配置只对当前会话有效,如果想一直生效的话:

[root@CentOS ~]# echo "export LANG=zh_CN.utf8" >> ~/.bashrc
[root@CentOS ~]# echo "export LC_ALL=zh_CN.utf8" >> ~/.bashrc

3. 中文文件名乱码

如果你在 Windows 简体中文系统中(默认编码使用 ANSI/OEM - 简体中文 GBK),新建了一个名称为 "China我爱你.txt" 的文件,然后通过 SSH 上传到 Linux 上,却发现文件名变成了:

[root@CentOS ~]# ls -l
总用量 20
-rw-r--r--  1 root root   21 10月 19 16:04 China?Ұ???.txt

这是因为文件名中的 我爱你 三个字符是用 GBK 编码的,而 Linux 中我们设置的是 UTF-8 编码方案,它没办法正确 解码 出 GBK 编码后的字节序列,所以乱码了

此时,要么在 Linux 上安装 convmv 软件,可以用来转换 文件名 中的编码:

[root@CentOS ~]# yum -y install convmv
[root@CentOS ~]# convmv --notest -f gbk -t utf8 China?Ұ???.txt

或者在 Windows 上通过 Xftp 等程序连接 Linux,由于 Xftp 程序会默认使用当前操作系统所使用的编码方案(GBK),所以你能够在 Xftp 中看到正确的文件名,然后也可以选择修改它为英文文件名即可

4. 查看 GBK 文件的内容

在 Linux 中我们设置的是 UTF-8 编码方案,通过 cat 命令来查看 GBK 文件的内容时会显示乱码!可以用 iconv 命令转换 文件内容 的编码方案:

1. 乱码 (把Xshell的编码改成GBK后,能够正常显示GBK文件内容)
[root@CentOS ~]# cat 1-GBK.txt 
Hello£¬ˀ½

2. 临时转换并输出:
[root@CentOS ~]# cat 1-GBK.txt | iconv -f GBK -t UTF-8
Hello,世界

3. 保存到新文件中:
[root@CentOS ~]# iconv -f GBK -t UTF-8 -o 2-conv-GBK-to-UTF8.txt 1-GBK.txt
[root@CentOS ~]# cat 2-conv-GBK-to-UTF8.txt 
Hello,世界

如果通过 Vim 来查看或编辑 GBK 文件时,由于 Vim 默认也是使用 UTF-8 编码方案来解码文件的,所以也是显示乱码。此时,需要修改 ~/.vimrc 添加如下行:

" 字符编码
set encoding=utf-8
" 打开文件时,自动从下面的列表中选择正确的编码方案进行解码 [Decode]
set fileencodings=utf-8,ucs-bom,cp936,gb18030,big5,euc-jp,euc-kr,latin1
set helplang=cn

再次用 Vim 打开 GBK 文件时,就能正常显示内容了

未经允许不得转载: LIFE & SHARE - 王颜公子 » Linux 修改为简体中文

分享

作者

作者头像

Madman

如需 Linux / Python 相关问题付费解答,请按如下方式联系我

0 条评论

暂时还没有评论.