当前位置: 首页 > news >正文

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

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按键失灵

相关文章:

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

注意:这里主要解决的是图形界面、远程登录界面的中文乱码问题 系统原生的终端(如虚拟机系统显示的终端),由于使用的是十分原始的 TTY 终端,使用点阵字体进行显示,点阵字体不支持中文,因此无法显…...

使用kaggle命令下载数据集和模型

点击用户头像,点击Settings: 找到API,点击create new token,将自动下载kaggle.json: 在用户目录下创建.kaggle文件夹,并将下载的kaggle.json文件移动到该文件夹: cd ~ mv Downloads/kaggle.j…...

生信初学者教程(十一):数据校正

介绍 批次效应在生物学数据分析中是一个普遍存在的问题,它指的是由于实验过程中非生物学因素(如样本处理时间、实验条件、测序平台等)的差异,导致实验结果中混入与研究目标不相关的变异。在比较对照组和实验组时,这些非生物学因素可能引入额外的噪声,影响对生物学问题真实…...

JS设计模式之桥接模式:搭建跨越维度的通路

引言 在软件开发中,我们经常遇到需要对不同的抽象类进行不同的实现的情况,而传统的对象嵌套并不是一个优雅且可扩展的解决方案,因此这正是桥接模式的用武之地。桥接模式通过将抽象与实现分离,使得它们可以独立变化,从…...

苹果电脑系统重磅更新——macOS Sequoia 15 系统 新功能一 览

有了 macoS Sequoia,你的工作效率将再次提升:快速调整桌面布局,一目了然地浏览网页重点,还可以通过无线镜像功能操控你的iPhone。 下面就来看看几项出色新功能,还有能够全面发挥这些功能的 App 和游戏。 macOS Sequo…...

DoppelGanger++:面向数据库重放的快速依赖关系图生成

doi:DoppelGanger: Towards Fast Dependency Graph Generation for Database Replay,点击前往 文章目录 1 简介2 架构概述3 依赖关系图3.1 符号和问题定义3.2 无 IT(k) 图3.3 无 OT 图表3.4 无 OTIT 图表3.5 无 IT[OT] 图表3.6 输出确定性保证 4 重复向后…...

Linux(含麒麟操作系统)如何实现多显示器屏幕采集录制

技术背景 在操作系统领域,很多核心技术掌握在国外企业手中。如果过度依赖国外技术,在国际形势变化、贸易摩擦等情况下,可能面临技术封锁和断供风险。开发国产操作系统可以降低这种风险,确保国家关键信息基础设施的稳定运行。在一…...

calibre-web默认左上角字体修改

calibre-web默认左上角字体修改 如图: 有些奇异,如果想变成正常的常规字体,需要修改: cps\static\css\style.css 下的代码: 默认是GrandHotel-Regular: 换成其他字体即可。其他字体在 calibre-web\cps\s…...

考研数据结构——C语言实现归并排序

包含头文件:程序首先包含了标准输入输出库stdio.h,以便使用printf等函数进行输入输出操作。 定义数组和数组大小:定义了一个宏N,其值为5,表示数组q的长度。数组q被初始化为{5, 3, 8, 4, 2},这是我们要排序…...

LDO功率管选取NMOS和PMOS区别

一、drop电压 LDO如果两个管子流过相同的电流, 假设将管子饱和并顶到接近线性区 NMOS的效率(VIN-VDSAT-VGS)/VIN PMOS的效率=(VIN-VDSAT)/VIN 根本原因是 nmos的gate电压比source高vth 如果输出电压(source)较高或者驱动电流要大&#xff0c…...

【Linux】进程的标识符、状态(超详解)

目录 进程的概念 进程标识符PID 系统调用创建进程-fork初识 进程状态 R状态(运行状态) S,D状态(休眠状态) T,t状态 Z状态(僵尸进程) 孤儿进程 X状态(死亡状态&a…...

Elasticsearch 启动后在浏览器输入http://localhost:9200 访问失败

windows Elasticsearch 启动后在浏览器输入http://localhost:9200 访问失败 文章目录 前言本地下载安装了个elasticsearch,启动成功了,在本地访问http://localhost:9200 无法访问!!!难受了一下。 一、windows Elastics…...

javascript中new操作符的工作原理

在 JavaScript 中,new 操作符用于创建对象的实例。它可以让我们通过构造函数创建一个新的对象,并初始化该对象的属性和方法。尽管 new 操作符的使用很常见,但它在背后实际进行了几个步骤。下面详细解释 new 操作符具体做了哪些事情。 new 操…...

基于springboot+vue 旅游网站的设计与实现

基于springbootvue 旅游网站的设计与实现 摘 要 互联网发展至今,无论是其理论还是技术都已经成熟,而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播,搭配信息管理工具可以很好地为人们提供服务。针对信息管理混乱&#xff0c…...

Ansible集群服务部署案例

案例描述 本案例共讲述了多个节点部署Elk集群日志分析系统,分别在三个节点使用ansible部署Kibana、Logstash以及Elasticsearch服务。 案例准备 1. 规划节点 IP 主机名 节点 192.168.100.25 ansible Ansible节点 192.168.100.35 node1 Elasticsearch/Kiba…...

探索AI编程新境界:aider库揭秘

文章目录 **探索AI编程新境界:aider库揭秘**背景:为何选择aider?简介:aider是什么?安装指南:如何安装aider?功能演示:aider的简单用法实战应用:aider在不同场景下的使用常…...

SQL Server 2012 ldf日志文接太大的截断和收缩日志处理

SQL Server 2012 ldf日志文接太大的截断和收缩日志处理操作 --- SQL Server 2012 ldf日志文接太大的截断和收缩日志处理 ----- 查看所有 database 列表及详情 select * from sys.databases;-- 切换到指定的操作数据库 use testdb;-- 查询当前数据库的日志文件ID和逻辑文件名 S…...

java日志门面之JCL和SLF4J

文章目录 前言一、JCL1、JCL简介2、快速入门3、 JCL原理 二、SLF4J1、SLF4J简介2、快速入门2.1、输出动态信息2.2、异常信息的处理 3、绑定日志的实现3.1、slf4j实现slf4j-simple和logback3.2、slf4j绑定适配器实现log4j 4、桥接旧的日志框架4.1、log4j日志重构为slf4jlogback的…...

Oracle DB运维常用的视图及数据字典

List item 本文介绍一些Oracle DB日常运维最常用到(使用频率很高)的视图及数据字典 用户有关的常用视图: 1、 查看当前用户的缺省表空间* SQL>select username,default_tablespace from user_users; 2、 查看当前用户的角色 SQL>sele…...

vue.config.js devServer中changeOrigin的作用

问题 vue开发时,为了解决前端跨域问题,通常在vue.config.js配置 devServer proxy devServer: {proxy:{/api: {target: http://b.com,changeOrigin: false},}, }官方文档http-proxy options对changeOrigin的解释 option.changeOrigin: true/false, Defa…...

基于Ubuntu 20.04 LTS上部署MicroK8s(最小生产的 Kubernetes)

目录 文章目录 目录简介Kubernetes简介MicroK8s简介Ubuntu系统MicroK8s的优势安装环境基本要求执行安装命令加入群组(使用非 root 用户访问)开启 dashboard 仪表盘查看服务名称查看仪表盘开放的端口打开浏览器检查状态打开你想要的服务(使用附加组件)开始使用 microk8s访问 Kub…...

Spring:项目中的统一异常处理和自定义异常

介绍异常的处理方式。在项目中,都会进行自定义异常,并且都是需要配合统一结果返回进行使用。 1.背景引入 (1)背景介绍 为什么要处理异常?如果不处理项目中的异常信息,前端访问我们后端就是显示访问失败的…...

有点快要跟不上时代的感觉

团队的群里面有一个同事突然问了下,下面的这个 JavaScript 如何进行优化 var startIndex (start undefined || start null) ? null : start[0].Value;看上面的代码就是典型的判断和返回的问题。 如果是要调试的话也不是做不出来,但可能要花点时间&a…...

【pytorch】pytorch入门4:神经网络的卷积层

文章目录 前言一、定义概念 缩写二、性质三、代码总结参考文献 前言 使用 B站小土堆课程的笔记 一、定义概念 缩写 卷积层是神经网络中用于突出特征来进行分类任务的层。 二、性质 卷积核例子:vgg16 model 三、代码 添加库 python代码块import os import …...

【机器学习】探索LSTM:深度学习领域的强大时间序列处理能力

目录 🍔 LSTM介绍 🍔 LSTM的内部结构图 2.1 LSTM结构分析 2.2 Bi-LSTM介绍 2.3 使用Pytorch构建LSTM模型 2.4 LSTM优缺点 🍔 小结 学习目标 🍀 了解LSTM内部结构及计算公式. 🍀 掌握Pytorch中LSTM工具的使用. &…...

QT学习笔记之文件操作

你千万不要跟任何人谈起任何事。你只要一谈起&#xff0c;就会想念起每一个人来。 在ui界面添加一个LineEdit(lEt)、QPushButton(btn)、QWidget widget.cpp #include "widget.h" #include "ui_widget.h" #include <QFile> #include <QFileDialo…...

Mybatis XML配置文件操作数据库

Mybaits在操作数据库时&#xff0c;可以有两种方式&#xff1b;第一种是使用注解的方式操作&#xff0c;另一种是使用XML配置文件的方式&#xff1a;一般而言&#xff0c;若没有特别的要求&#xff0c;则编写一些简单的SQL语句&#xff0c;可以直接使用注解的方式&#xff1b;编…...

Ansible-template模块动态生成特定文件

文章目录 一、Jinja2介绍什么是主要特性安装基本用法进阶特性总结 Jinja2与Ansible关系1. 模板引擎2. Ansible 的依赖3. 变量和模板4. 动态生成配置5. 社区和生态系统总结 二、Ansible如何使用Jinja2使用template模块Jinja2文件中使用判断和循环Jinja2文件中使用判断语法 Jinja…...

【Hadoop】【vim编辑器】【~/.bashrc 文件】如何编辑

1. 进入 vim 编辑器 在终端中输入以下命令&#xff1a; vim ~/.bashrc 2. 进入插入模式 打开文件后&#xff0c;你将处于普通模式。在普通模式下&#xff0c;你不能直接编辑文本。 要进入插入模式&#xff0c;请按下 i 键。这时&#xff0c;你应该会看到屏幕底部出现 -- 插…...

vs code自动报错

让vs code自动报错&#xff0c; 点击插件 → 搜索error lens → 点击install&#xff0c; 下载完后&#xff0c;编写的代码有问题就会自动报错了。 5、修改默认缩进字符 点击设置&#xff08;settings&#xff09; → 点击常用设置 → 修改字符缩进。...