Linux终端中文字体显示乱码问题解决方法
背景:海外新开的VPS经常对中文字符显示不友好,需要手动修改一下
一、Linux终端文件名显示不支持中文解决方法
比如使用ls查看时:
root@AWS-HK:~# ls
1 snap
get-docker.sh zabbix-release_5.0-2+ubuntu22.04_all.deb
iptables.bak ''$'\346\226\260\345\273\272\346\226\207\346\234\254\346\226\207\346\241\243'' (2).txt'
这其中“$'\346\226\260\345\273\272\346\226\207\346\234\254\346\226\207\346\241\243'”是就一个中文文件名。这时我们就需要按照以下步骤操作:
1,运行locale命令查看当前的locale设置
root@AWS-HK:~# locale
LANG=
LANGUAGE=
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=
2,如果没有中文支持,需要编辑/etc/locale.gen文件,取消中文前面的注释,如下:
vim /etc/locale.gen
..... #直接来到最下面
# zh_CN GB2312
zh_CN.GB18030 GB18030 #如果不行再取消这个
# zh_CN.GBK GBK
zh_CN.UTF-8 UTF-8 #取消这个注释
# zh_HK BIG5-HKSCS
# zh_HK.UTF-8 UTF-8
# zh_SG GB2312
# zh_SG.GBK GBK
# zh_SG.UTF-8 UTF-8
3,然后运行locale-gen生成locale,
root@AWS-HK:~# locale-gen
Generating locales (this might take a while)...
zh_CN.UTF-8... done
en_US.UTF-8... done
zh_CN.GB18030... done
Generation complete.
4,验证
root@AWS-HK:~# vim /etc/profile.d/zh_CN.UTF-8 #添加环境变量
export LANG=zh_CN.UTF-8
root@AWS-HK:~# source /etc/profile.d/zh_CN.UTF-8
root@AWS-HK:~# ls
1 '新建文本文档 (2).txt' get-docker.sh iptables.bak snap zabbix-release_5.0-2+ubuntu22.04_all.debbbuc
补充:在 CentOS Stream 9 上设置系统的 locale 为中文
要在 CentOS Stream 9 上设置系统的 locale 为中文(假设我们使用简体中文,locale 是 `zh_CN.UTF-8`),您需要进行以下步骤: 首先,检查系统是否已经安装了相应的中文 locale:
locale -a | grep zh_CN.utf8
如果返回 `zh_CN.utf8`,那么说明已经安装了中文 locale。如果没有返回任何内容,那么你需要先使用 `dnf` 命令安装语言包。
dnf install glibc-langpack-zh
然后,你可以用 `localectl` 命令设置系统的 locale:
localectl set-locale LANG=zh_CN.utf8
最后,退出终端“exit”重新连接,然后通过以下命令验证更改是否生效:
locale | grep LANG=
返回的应该是 `LANG=zh_CN.utf8`,这表明系统的 locale 已经设置为简体中文。
二,vim打开有中文的文件,中文显示乱码解决方法
1,打开用户家目录下的 .vimrc 文件(默认没有就创建)
root@AWS-HK:~# vim .vimrc
#在里面添加以下内容
set termencoding=utf-8
set encoding=utf8
set fileencodings=utf8,ucs-bom,gbk,cp936,gb2312,gb18030
记得 :wq 保存退出
再次用vim打开文件就可以看到中文已经正常显示了
说明:encoding是Vim内部使用的字符编码方式,一般设置为utf8。termencoding是Vim所工作的终端(或者
Windows的Console窗口)的字符编码方式,一般设置为utf8。fileencodings是Vim自动探测fileencoding的顺序列表,启动时会按照它所列出的字符编码方式逐一探测即将打开的文件的字符编码方式。这些设置需要set命令来进行设置生效。
评论
发表评论