Linux命令行创建、输入、编辑、显示中文字符以及安装中文字体
- 2024-06-27 20:03:00
- 丁国栋
- 原创 826
第一部分 如何创建、输入、显示中文
通常我们需要远程到Linux服务器,它可能是一台主机、虚拟机也可能是容器。要想终端能输入并显示中文,需要安装中文支持并设定SSH客户端的编码。
假设我们使用xshell作为ssh客户端,可以设置编码为 Unicode(UTF-8)
,这通常是最普遍最通用的做法。
在RedHat和Debian中有较大的不同,本文以 CentOS/Ubuntu 为例介绍如何在终端里显示中文。
下面是CentOS环境
docker run --rm -it -v /etc/localtime:/etc/localtime centos:7 /bin/bash
只需要执行,即可显示中文
export LANG=en_US.UTF-8 export LC_ALL=en_US.UTF-8
如果期望这个设置长期有效或者重启后依然有效,对于bash shell可以将上述两条写入~/.bash_profile
文件或者~/.bashrc
里。
注:实际上只需要设置 export LC_ALL=en_US.UTF-8
即可,而且值可以是多种,只要是带UTF-8即可,例如en_AU.utf8、en_HK.utf8、en_GB.utf8等等。
注:LC
是 Locale Category
地区分类 的缩写,用于指定与地区或语言相关的设置,比如日期格式、货币符号和排序规则等。
下面是Ubuntu环境
docker run --rm -it -v /etc/localtime:/etc/localtime ubuntu:jammy /bin/bash
如果仍然按照上面CentOS的方法,只能显示中文,但可能无法实现输入中文,那是因为Ubuntu下默认没有en_US.UTF-8的语言选项。
所以正确的办法是:
export LC_ALL="C.UTF-8"执行后,可以再次执行bash即可生效,当然也可以重启容器或者重新进入容器。
重点:无论使用哪一个环境,都可以使用 locale
查看当前系统的区域设置,Ubuntu 和 CentOS 默认都是 POSIX 。使用命令 locale -a
可以查看当前系统支持的区域设置(语言设置)。默认情况下Ubuntu是只有C、C.UTF-8、POSIX三个,而CentOS就支持的较多,例如有en_GB.utf8、en_US.utf8等五十多个。
如果只是期望在vim 里显示中文,可以在命令模式使用 'set encoding=utf8
' 设置显示中文。
另外我们需要养成一个“好习惯”,尽可能的在Linux系统避免使用中文作为名称,在安装系统时默认语言也使用英文,这样可以减少很多乱码的情况。
第二部分 如何安装中文字体
对于yum、.rpm包管理器的操作系统,比如RHEL、CentOS
yum install -y xorg-x11-font-utils fontconfig # 安装必要的工具 yum groupinstall fonts -y # 这一步是安装了大多数可用的字体,使用yum groups info fonts查看要安装的列表,gnu-free-mono-fonts、gnu-free-sans-fonts、gnu-free-serif-fonts等 fc-list :lang=zh # 列出有哪些是中文的字体 fc-cache -vf # 更新字体缓存
对于apt、dpkg、.deb包管理器的操作系统,比如Debian、Ubuntu
sudo apt install fontconfig -y sudo apt install language-pack-zh-hans -y如果需要使用Windows下已有或已安装的字体,则再将Windows下的字体 C:\Windows\fonts 打包到 /usr/share/fonts/WindowsFonts/ 下,执行以下命令
mkfontscale mkfontdir fc-cache -vf # not need reboot or restart fc-list fc-list :lang=zh
重要提示:很多字体是有版权保护的,有些是个人可以使用组织不能商用,有些是Windows下可以使用其他系统不能使用。例如大家熟知的微软雅黑,既不能商用也不能用在非Windows系统。Mac OSX上有些字体同样也是。
--