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

注意:这里主要解决的是图形界面、远程登录界面的中文乱码问题
系统原生的终端(如虚拟机系统显示的终端),由于使用的是十分原始的 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.2 确认是否有中文字体

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

1.3 安装中文字体

1.3.1 安装中文字体软件包
这里安装【文泉驿正黑】字体,这是一款免费、开源、可免费商用字体

字体介绍:http://wenq.org/wqy2/index.cgi

安装命令

sudo dnf install -y fonts-wqy-zenhei

安装后刷新字体库

fc-cache -f -v

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

fc-list :lang=zh-cn

以下字体是新安装的字体

1.3.2 字体库手动添加字体
参考文档:[https://www.cnblogs.com/xiaoniandexigua/p/17896240.html](https://www.cnblogs.com/xiaoniandexigua/p/17896240.html)

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

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

要求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"
    
  3. 保存配置文件

  4. 使配置文件生效

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

    locale
    

    查看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"
  • LANG=指定语言格式(如果不同时设置其他的参数,则会自动设置对应的显示语言、键位等参数
  • LC_MESSAGES=指定系统输出语言格式,相当于指定系统的显示语言

修改后查看localectl状态

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

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

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

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

5. 远程终端软件的配置

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1544086.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

前端——表单标签样式

1. form表单标签 块级元素 action: 表单提交地址 method: 表单提交格式 https网络协议请求格式: post/get等 通常: post方式是发送数据 而get是拿取数据 name: 表单的名称 target: 提交完表单之后 你的新页面在哪里打开 2. input输入控件 可以通过type属性 …

7,STM32CubeMX配置IIC工程(OLED显示)

1,前言 单片机型号:STM32F407 编程环境 :STM32CubeMX Keil v5 硬件连接 :串口1,ADC1CH5--->PA5 注:本工程在1,STM32CubeMX工程基础(配置Debug、时钟树)基础上…

【Unity保龄球项目】的实现逻辑以及代码解释

1.BaoLQManager.cs 这个脚本实现了基本的保龄球游戏逻辑,包括扔球功能。 using System.Collections; using System.Collections.Generic; using UnityEngine;public class BaoLQManager : MonoBehaviour {// 业务逻辑1:把保龄球扔出去// 业务逻辑2&am…

祝桥镇星光村火情闪电救援:速控之下,安全警钟长鸣

安科瑞武陈燕 在秋日的午后,阳光本应温柔地洒在浦东新区祝桥镇星光村的每一个角落,然而,一场突如其来的火灾打破了这份宁静。 9月2日中午12时许,该村1队的一户居民家中突然燃起熊熊大火,浓烟滚滚自二楼窗口腾空而起&…

gdb调试和makefile管理

一.gdb调试工具 命令 简写 作用 help h 按模块列出命令类 help class 查看某一类型的具体命令 lsit l 查看代码,可跟行号和函数名 quit q 退出gdb run r 全速运行程序 start 单步执行,运行程序,停在第一行执行语句 next …

Qt 窗口类的继承关系和作用

核心基类 [1] QObject:Qt中许多类的基类,支持Qt对象模型,包括信号和槽机制、对象树和事件系统等。虽然它本身不是直接用于创建窗口的,但它是许多窗口和控件类继承链中的重要一环。 注:如果你创建了一个自定义类&…

杰发科技——Eclipse环境安装

文件已传到网盘: 1. 安装文件准备 2. 安装Make 默认路径:C:\Program Files (x86)\GnuWin32\bin\ 不复制的话会报错 Error: Program "make" not found in PATH 3. 安装工具链 默认路径:C:\Program Files (x86)\Arm GNU Toolchain…

OpenAI converting API code from GPT-3 to chatGPT-3.5

题意:将OpenAI API代码从GPT-3转换为ChatGPT-3.5 问题背景: Below is my working code for the GPT-3 API. I am having trouble converting it to work with chatGPT-3.5. 以下是我用于GPT-3 API的工作代码。我在将其转换为适用于ChatGPT-3.5时遇到了…

Android Studio 真机USB调试运行频繁掉线问题

一、遇到问题 Android Studio使用手机运行项目时,总是频繁掉线,连接很不稳定,动不动就消失,基本上无法使用 二、问题出现原因 1、硬件问题:数据线 换条数据线试试,如果可以,那就是数据线的…

15年408-数据结构

第一题 解析: 栈第一次应该存main的信息。 然后进入到main里面,要输出S(1),将S(1)存入栈内, 进入到S(1)中,1>0,所以还要调用S(0) S(0)进入栈中,此时栈内从下至上依次是main(),S(1),S(0) 答案选A 第二题&…

昇腾AI异构计算架构CANN——高效使能AI原生创新

异构计算与人工智能的关系是什么?昇腾AI异构计算架构CANN是什么?有哪些主要特点?开发者如何利用CANN的原生能力进行大模型创新,构筑差异化竞争力?带着这些问题,我们来认识昇腾AI异构计算架构——CANN。 1 …

随机验证码验证【JavaScript】

这段 JavaScript 代码实现了随机验证码的生成和验证功能。 实现效果&#xff1a; 代码&#xff1a; <!DOCTYPE html> <html lang"zh"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-…

Vue3教程 - 2 开发环境搭建

更好的阅读体验&#xff1a;点这里 &#xff08; www.foooor.com &#xff09; 2 开发环境搭建 要进行 Vue 开发&#xff0c;需要安装 Node.js&#xff0c;因为构建 Vue 项目的工具&#xff0c;例如 Webpack、Vite等&#xff0c;这些工具依赖于Node.js环境来运行。 Node.js…

OpenAI GPT-3 API: What is the difference between davinci and text-davinci-003?

题意&#xff1a;OpenAI GPT-3 API&#xff1a;davinci 和 text-davinci-003 有什么区别 问题背景&#xff1a; Im testing the different models for OpenAI, and I noticed that not all of them are developed or trained enough to give a reliable response. 我正在测试…

玩手机数据集 8201张玩手机的照片,有对应的xml和txt文件,可以用于yolo训练

玩手机数据集 8201张玩手机的照片&#xff0c;有对应的xml和txt文件&#xff0c;可以用于yolo训练 玩手机数据集&#xff08;Phone Usage Detection Dataset&#xff09; 数据集概述 该数据集专为检测人们使用手机的行为设计&#xff0c;旨在帮助研究人员和工程师开发高效的…

Sentinel-1 数据处理时如何手动下载高程数据

在Sentinel-1 数据数据预处理时&#xff0c;会使用高程数据进行地形校正。但选择自动下载高程时&#xff0c;由于网络原因经常会卡死&#xff0c;造成预处理过程不能正常进行&#xff01; 这个问题经过我的反复实践&#xff0c;可以通过手动下载高程数据来解决。下面是具体方法…

MySQL之基本查询(一)(insert || select)

目录 一、表的增删查改 二、表的增加insert 三、表的读取select where 条件子句 结果排序 筛选分页结果 一、表的增删查改 我们平时在使用数据库的时候&#xff0c;最重要的就是需要对数据库进行各种操作。而我们对数据库的操作一般来说也就是四个操作&#xff0c;CRUD :…

【学术会议征稿】第七届电力电子与控制工程国际学术会议(ICPECE 2024)

高录用|快检索|JPCS独立出版ISSN:1742-6596 连续6年EI检索&#xff0c;稳定且快速 见刊后均1个月检索 第七届电力电子与控制工程国际学术会议&#xff08;ICPECE 2024&#xff09; 2024 7th International Conference on Power Electronics and Control Engineering 2024年…

认知作战壳吉桔:未来认知战战略全案发展趋势

认知作战壳吉桔&#xff1a;未来认知战战略全案发展趋势 认知作战壳吉桔&#xff1a;未来认知战战略全案发展趋势 关键词&#xff1a;认知战战术融合, 数据驱动决策, 生成式人工智能AIGC, 影响力认知, 个性化定制, 沉浸式体验, 视频直播认知, 受众体验优化, 社交媒体互动, 可…

[PICO VR]Unity如何往PICO VR眼镜里写持久化数据txt/json文本

前言 最近在用PICO VR做用户实验&#xff0c;需要将用户实验的数据记录到PICO头盔的存储空间里&#xff0c;记录一下整个过程 流程 1.开启写入权限 首先开启写入权限&#xff1a;Unity->Edit->Player->安卓小机器人->Other Settings->Configuration->Wri…