CentOS7的locale配置

CentOS7的locale配置,第1张

    前段时间公司项目导出文件名乱码,经过一番摸索,发现是linux服务器系统编码的锅,看了网上很多帖子,我也有了一些总结(以下出现linux都表示CentOS7)。

    一般来说,如果你的linux系统没人修改字符集相关配置,那么你是算幸运的。我们中国的项目多数使用utf-8字符集,网上也有说明linux默认字符集是UTF-8,乍一看是统一的,不会乱码,但是实际上,linux默认是"en_US.UTF-8"(至少我的是这样的),而我们需要的实际上不是这个,而是zh_CN.UTF-8,所以我需要把系统字符集修改为"zh_CN.UTF-8"。

修改步骤:

1)直接输入 locale 可查看当前linux系统字符集配置;

观察是否都为"zh_CN.UTF-8"(LC_ALL可以是空的),如若不是,就需要往下走配置了

2)修改 /etc/locale.conf文件;

这个文件的内容不需要多,如果你没有特殊需求(不同功能要求不同字符集编码),仅仅放一行,LANG="zh_CN.UTF-8";然后就可以了,其他文件都不需要动,越动越乱。

3)让locale.conf生效;

使用 source /etc/locale.conf,然后使用 locale 命令查看是否字符集配置修改好。

说明:

第一点:网上有说法修改 i18n 文件,那要看你的目的是什么,我这里,这个文件根本不需要。因为我用的locale.conf,这两个文件有一个就好,我推荐使用locale.conf,centOS7默认没有i18n文件的。使用i18n就自求多福吧!

第二点:不建议对LC_ALL进行配置,确实没必要。如果你主动配置类LC_ALL可能会有很多麻烦事儿等着你。(比方说,有些linux版本,当LANG与LC_ALL配置值相同时,LC_ALL会在/etc/profile.h/lang.sh中被置为空,自己去看lang.sh的内容,就明白了)补充一下,调用文件顺序profile-->lang.sh-->locale.conf

第三点:不建议在profile文件中通过 export LANG="zh_CN.UTF-8"来实现字符集修改(虽然也可以实现),个人感觉这样 *** 作很不舒服。在locale.conf配难道不香吗?(注意差别,差个"export")

第四点:如果你使用shell来连接linux服务器,那你需要当心了。网上有些说法是使用export LANG="zh_CN.UTF-8"命令 或者是export LC_All="zh_CN.UTF-8"来实现字符集模明修改,我感觉是在骗自己,虽然在当前shell使用locale可以发现修改成功,但当你重新打开一个shell,字符集还是修改之前的。原因百度上有说,linux对每个shell的这种临时配置是隔离的,只对当竖旁前shell有效。

第五点:其实上面的修改配置的 步骤3)source命令也是对当前shell的 *** 作,你可以不执行步骤3,直接关闭当前shell,然后重新打开一个shell,你会发现,字符集已经修改好了,之所以要执行source命令是因为①要确定是否配置有误②不想重新打开shell,想在当前shell直接locale看修改结果。

第六点:如果你按照上面的提示修改了locale.conf却发现执行locale的结果始终异常(不是你配置的那种字符集)那说明之前有人在此linux系统作了相关变量的配置,自己慢慢去找吧,按照打开shell的文件加载顺序,或是linux系统启动的文件加载顺序,一个一个去找旦纤告,应当是对profile之后的某个文件(可能是当前用户的个性化脚本,如~/.bashrc文件等)加了LANG变量或是LC_ALL变量的配置。

(以上仅代表本人粗浅的经验结论,若用不当之处,还望指教)

完(Aronc 20210327)

解决方法如下:

一、首先查看当前系举运统默认采用的字符集命令:locale或者echo$LANG,如果当初安装的时候已租孝经选择了中文语言包的话,那么默认的就是UTF-8字符集:

[root@localhost~]#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=[root@localhost~]#echo$LANG

zh_CN.UTF-8

二、SecureCRT的修改,选项→会话选项,将外观中的字符编码集修改为UTF-8即可,其他终端程序同理

三、如果在第一步中字符集显示出来是其他的,那么需要先安装中文包,命令:yum-ygroupinstallchinese-support

安装后之后,修改字符编码配置,命令:vim/etc/locale.conf将LANG=”XXXX”改为LANG=”zh_CN.UTF-8”,注意Centos7的字符集配置文件为/etc/locale.conf,如果是7之前的版本,应弊答稿修改/etc/sysconfig/i18n,修改完之后记得reboot.

1.查看当前配置:localectlstatus

2.查看可用的区域语言:localectllist-locales|grepCN

3.设置区域语音:localectlset-localeLANG=zh_CN.utf8

4.键盘布局查看和配置使用以下命令:

localectl还可以配置远程系统的区域配置,加-H参数奇可以了。

如果在第一步中字符集显示出来是其他的,那么需要先安装中文包,命令:yum -y groupinstall chinese-support

安装后之后,修改字符编码配置,命令:vim /etc/locale.conf 将LANG=”XXXX” 改为LANG=”zh_CN.UTF-8”,注意Centos7的字符集配渣猜置文件为 /etc/locale.conf,脊梁竖如果是7之前的版本,应修改 /etc/sysconfig/i18n,修改完之樱大后记得 reboot.


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11978496.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存