智传网优云课堂,专注分享IT技术
与IT技术爱好者一起共同学习进步

Linux乱码怎么解决

1. 前言

1.1 locale简介

理解一下Linux中的专业名词:locale
在Linux中,它使用locale命令来设置和显示程序运行的语言环境(也就是系统运行语言环境,应用进程是在系统的进程之上运行的,应用程序的父进程是init进程)
locale的英文直译为场所,地区,地域,但它在Linux中含义要更大,在Linux中Locale根据计算机用户所使用的语言,所在国家或者地区,以及当地的文化传统定义一个软件运行时的语言环境 。
locale的主要作用是描述某一个地域内的人们的语言习惯和文化传统和生活习惯。一个地区的locale就是根据几大类的习惯(变量)定义的。

linux乱码

1.2 locale的配置语法

locale的配置语法:<语言>_<地区>.<字符集编码><@修正值>
例如:
zh_CN.utf8

zh代表中文,CN代表大陆地区,utf8表示字符集。

de_DE.UTF-8@euro

de表示德语,DE表示德国,UTF-8表示字符集,euro表示按照欧洲习惯加以修正

1.3 locale命令的原理

Locale命令的本质就是设置一组共12个LC开头的变量(不包括LANG和LC_ALL)
Linux中locale文件存放位置: /usr/share/i18n/locales

检查当前系统支持的语言:

[root@zcwyou ~]# ll  /usr/share/i18n/locales

查看当前系统使用的语言环境:

[root@zcwyou ~]# locale

LANG=zh_CN.UTF-8
LC_CTYPE=”zh_CN.UTF-8″
LC_NUMERIC=”zh_CN.UTF-8″
LC_TIME=”zh_CN.UTF-8″
LC_COLLATE=”zh_CN.UTF-8″
LC_MONETARY=”zh_CN.UTF-8″
LC_MESSAGES=”zh_CN.UTF-8″
LC_PAPER=”zh_CN.UTF-8″
LC_NAME=”zh_CN.UTF-8″
LC_ADDRESS=”zh_CN.UTF-8″
LC_TELEPHONE=”zh_CN.UTF-8″
LC_MEASUREMENT=”zh_CN.UTF-8″
LC_IDENTIFICATION=”zh_CN.UTF-8″
LC_ALL=

LANG
LANG的优先级是最低的,它是所有LC_*变量的默认值。下方所有以LC_开头变量(不包括LC_ALL)中,如果存在没有设置的LC变量值,那么系统将会使用LANG的变量值来给这个变量进行赋值。如果LC变量有值,则以当前LC值为准。

LC_CTYPE
用于字符分类和字符串处理,控制所有字符的处理方式,包括字符编码,字符是单字节还是多字节,如何打印等,包括输入文字等等都与这个值有关。

LC_NUMERIC
用于格式化非货币的数字显示。

LC_TIME
用于格式化时间和日期。

LC_COLLATE
用于比较和排序。

LC_MONETORY
用于格式化货币单位。

LC_MESSAGES
用于控制程序输出时所使用的语言,主要是提示信息,错误信息,状态信息, 标题,标签, 按钮和菜单等。

LC_PAPER
默认纸张尺寸大小

LC_NAME
姓名书写方式

LC_ADDRESS
地址书写方式

LC_TELEPHONE
电话号码书写方式

LC_MEASUREMENT
度量衡表达方式

LC_IDENTIFICATION
locale对自身包含信息的概述

LC_ALL
它不是环境变量,它是一个宏,可通过该变量的设置覆盖所有的LC_变量。这个变量设置之后,可以废除LC_的设置值,使得这些变量的设置值与LC_ALL的值一致,注意,LANG变量不受影响。

优先级级别:LC_ALL>LC_*>LANG

补充一下:如果要用英文环境中输入中文,可以把 LC_CTYPE设定成zh_CN.GB18030,而其他所有的项都是en_US.UTF-8。

locale的配置语法

2. 远程登录命令行乱码解决方法

先确定当前终端软件工具(比如putty/xShell/SecureCRT)的编码设置,强烈建议使用UTF-8。

确认当前的语言环境:

[root@zcwyou ~]# echo $LANG

en_US.UTF-8

可以看出,当前的语言环境为en_US.UTF-8

查看locale配置

[root@zcwyou ~]# cat /etc/locale.conf 

LANG=”en_US.UTF-8″

以上输出确认本系统支持的中文模式

[root@my_public_ip ~]# locale -a

留意最后的输出,可以看到zh_CN.utf8

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
zu_ZA
zu_ZA.iso88591
zu_ZA.utf8

修改locale配置

[root@zcwyou ~]# vi /etc/locale.conf

修改为以下内容

#LANG=”en_US.UTF-8″
LANG=”zh_CN.UTF-8″
LANGUAGE=”zh_CN.UTF-8:zh_CN.UTF-8:zh_CN”
SUPPORTED=”zh_CN.UTF-8:zh_CN:zh:en_US.UTF-8:en_US:en”
SYSFONT=”lat0-sun16″

修改locale配置

检查:

[root@zcwyou ~]# echo $LANG

en_US.UTF-8

结果显示没有生效。

必须退出登录才生效

[root@zcwyou ~]# exit

重新登录系统后:

[root@zcwyou ~]# echo $LANG

zh_CN.UTF-8
可以看出,语言环境已经全局更改过来了。

检查:

[root@zcwyou ~]# date 

2018年 11月 27日 星期二 14:31:09 CST

可以看到,已经有正确的中文显示了。

3. Linux图形界面设置中文

除了以上设置,还需要安装中文组件:

[root@zcwyou ~]# yum -y groupinstall "Chinese-Support"
[root@zcwyou ~]# yum -y install fonts-chinese
赞(0)
未经允许不得转载:Linux入门学习到精通 » Linux乱码怎么解决
分享到: 更多 (0)

学习QQ群:557371664

关注微信公众号自助视频学习

评论 抢沙发

评论前必须登录!