首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

Centos/fedora/openEuler 终端中文显示配置

  • 25-03-07 16:50
  • 3324
  • 11261
blog.csdn.net

注意:这里主要解决的是图形界面、远程登录界面的中文乱码问题
系统原生的终端(如虚拟机系统显示的终端),由于使用的是十分原始的 TTY 终端,使用点阵字体进行显示,点阵字体不支持中文,因此无法显示中文
关于此问题的讨论见倒数第 3 章【One more thing】

0. 一些好看的字体

https://www.thosefree.com/design/fonts

  1. 黑体:鸿蒙字体 HarmonyOS Sans SC、OPPO Sans、MI Sans
  2. 宋体:思源宋体
  3. 楷体:霞鹜文楷
  4. 趣味体:得意黑
  5. 标题黑体:金山云技术体、庞门正道标题体
  6. 通用字体(非官方,中文+等宽英文的组合):微软雅黑Mono、微软雅黑-JBMono

1. 字体配置:解决显示乱码问题

总体思路:
  1. Linux 系统侧:正确安装好中文字体
    1. 确认是否有字体库 --> 没有则【安装字体库】
    2. 确认是否有中文字体 --> 没有则【安装中文字体】,有以下两种安装方法:
      1. 可通过【软件包安装】部分官方中文字体
        分析:简单,只需要会安装软件包即可;但只能安装几种官方字体
      2. 也可手动将中文字体文件【手动添加到字体库】中
        分析:操作比较复杂,要改配置;但可安装任意类型的字体
    3. 确认当前【系统语言格式为中文格式】
    4. (若要保证系统原生终端正常显示英文) 修改当前【系统语言为英文】
  2. 远程软件侧:正确配置,保证中文能正常显示

参考文档:

Linux 系统侧 – a 到 b 步骤:

  1. https://zhuanlan.zhihu.com/p/338919711
  2. https://www.cnblogs.com/xiaoniandexigua/p/17896240.html

Linux 系统侧 – d 步骤:

  1. https://man.archlinux.org/man/locale.conf.5.zh_CN

1.1 确认是否有字体库

fc-list
  • 1
  • 若提示“命令无效、未找到命令”等,则说明:没有字体库 --> 需要【安装字体库】
  • 若有输出,则说明:有字体库 --> 请看【是否有中文字体】
    正常输出类似这种:会输出当前识别到的所有字体的列表

1.2 确认是否有中文字体

fc-list :lang=zh-cn
  • 1
  • 查到有文字列表:说明有中文字体,列出的字体就是中文字体 --> 请看【确认当前系统显示的语言为中文】
  • 查询没报错但没有输出:说明没有中文字体 --> 需要【安装中文字体】
    以下是示例,查询的是日文的字体,显示如果【没有输出】是啥样的
  • 查询报错:字体库没有安装成功,参考【Linux 系统 a-b 步骤】的参考文档,重新安装

1.3 安装中文字体

1.3.1 安装中文字体软件包

这里安装【文泉驿正黑】字体,这是一款免费、开源、可免费商用字体
字体介绍:http://wenq.org/wqy2/index.cgi

安装命令

sudo dnf install -y fonts-wqy-zenhei
  • 1

安装后刷新字体库

fc-cache -f -v
  • 1

重新检查是否有安装的字体

fc-list :lang=zh-cn
  • 1

以下字体是新安装的字体

1.3.2 字体库手动添加字体

参考文档:https://www.cnblogs.com/xiaoniandexigua/p/17896240.html

1.4 确认当前系统支持显示中文(编码类型为 UTF-8)

输入以下指令,确定当前语言相关的配置(系统环境变量)
locale
  • 1

要求LANG=zh_CN.UTF-8

其中 zh_CN = 当前设置的地区,日期货币等显示格式以此为准,UTF-8 = 采用的编码格式,要为 UTF-8

  • 若是,则说明系统已经支持中文环境 --> 请看【远程终端软件的配置】
  • 若不是 --> 需要【修改系统语言环境为中文环境】

2. 修改系统语言环境为中文环境

  1. 打开配置文件:/root/.bashrc

  2. 在配置文件中添加相关配置(设置环境变量 LANG 的值为 zh_CN.UTF-8)

    # 将这一行添加到文件的新一行
    export LANG="zh_CN.UTF-8"
    
    • 1
    • 2
  3. 保存配置文件

  4. 使配置文件生效

    source /root/.bashrc
    
    • 1
  5. 重开一个新的命令行窗口,检查设置是否生效

    locale
    
    • 1

    查看LANG的值是否正确

    完成以上设置后,远程打开一个中文文件,其中的中文应该能正常显示了

3. One more thing

完成上面的步骤后,远程登录显示的文字无问题了,但有可能使用本地终端打开时,都是方块字了

究其根本原因:本地原生终端(runlevel ≤ 3 级别)为非常原始的 TTY 终端,使用的字体是点阵字体,这种点阵字体最多只支持 512 种字符,不支持 UTF-8 编码的中文内容

而上面的修改,有可能会把系统显示的语言也改成中文,导致系统报错、帮助、输出都带中文,原生终端都无法显示

解决方案:

  1. 显示的语言为英文,但支持中文
    可以理解为如同在华外国人,使用的电脑支持装中文软件、看中文文档,但系统显示的还是英文
    好处:日常系统级操作输出是英文,能正常显示;远程连接打开中文文档由于环境支持也能正常显示
    坏处:只解决了部分问题,若在本地打开中文文档,中文仍无法显示
  2. 换字体,即使是残缺的中文也比一个都显示不出来好(?)
    参考这个项目:https://github.com/oldherl/syllazh
  3. 使用一些魔法程序包(程序员的力量是无限的?)如zhcon。项目地址:https://zhcon.sourceforge.net/

下面介绍一下第一种方法,其他方法由于对系统破坏性较大,不建议使用,请自行尝试

4. (保证本地终端兼容性)设置当前系统语言为英文

参考文章:https://man.archlinux.org/man/locale.conf.5.zh_CN

如果要保证系统原生的终端也能正常显示,则必须使用英文为语言
否则会出现以下情况:远程界面中的中文正常显示,但系统原生的终端界面显示的中文就是方块

为兼容两方面的需求,可设置为:中文语言格式(如显示格式、区域、按键布局)、但显示(如报错提示等)用英文

使用localectl命令来实现

localectl set-locale LANG="zh_CN.UTF-8" LC_MESSAGES="en_US.UTF-8"
  • 1
  • LANG=指定语言格式(如果不同时设置其他的参数,则会自动设置对应的显示语言、键位等参数
  • LC_MESSAGES=指定系统输出语言格式,相当于指定系统的显示语言

修改后查看localectl状态

修改后需要重启服务器才能生效

可看到,在系统原生的终端界面中,系统显示语言为英文,日常操作输出的都是英文,日常系统级操作OK

但实际上这种方法只能供应急使用,若在原生终端中打开中文显示字符依旧会是方框

总结:要想显示中文,还是得远程登录(如用 MobaXterm、secureRT 等工具远程登录),本地的终端只能显示英文

5. 远程终端软件的配置

MobaXterm 参考我的另一篇笔记:MobaXterm基本使用 – 服务器状态、批量操作、字体设置、修复zsh按键失灵

文章知识点与官方知识档案匹配,可进一步学习相关知识
云原生入门技能树首页概览20449 人正在系统学习中
注:本文转载自blog.csdn.net的Lilixxs的文章"https://blog.csdn.net/weixin_44112083/article/details/142471370"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

101
推荐
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2024 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top