中山住房和建设局网站,建材行业网站建设方案,工程承包平台app,寿光专业做网站注意#xff1a;这里主要解决的是图形界面、远程登录界面的中文乱码问题 系统原生的终端#xff08;如虚拟机系统显示的终端#xff09;#xff0c;由于使用的是十分原始的 TTY 终端#xff0c;使用点阵字体进行显示#xff0c;点阵字体不支持中文#xff0c;因此无法显… 注意这里主要解决的是图形界面、远程登录界面的中文乱码问题 系统原生的终端如虚拟机系统显示的终端由于使用的是十分原始的 TTY 终端使用点阵字体进行显示点阵字体不支持中文因此无法显示中文 关于此问题的讨论见倒数第 3 章【One more thing】 0. 一些好看的字体
https://www.thosefree.com/design/fonts
黑体鸿蒙字体 HarmonyOS Sans SC、OPPO Sans、MI Sans宋体思源宋体楷体霞鹜文楷趣味体得意黑标题黑体金山云技术体、庞门正道标题体通用字体非官方中文等宽英文的组合微软雅黑Mono、微软雅黑-JBMono
1. 字体配置解决显示乱码问题 总体思路
Linux 系统侧正确安装好中文字体 确认是否有字体库 -- 没有则【安装字体库】确认是否有中文字体 -- 没有则【安装中文字体】有以下两种安装方法 可通过【软件包安装】部分官方中文字体 分析简单只需要会安装软件包即可但只能安装几种官方字体也可手动将中文字体文件【手动添加到字体库】中 分析操作比较复杂要改配置但可安装任意类型的字体 确认当前【系统语言格式为中文格式】(若要保证系统原生终端正常显示英文) 修改当前【系统语言为英文】 远程软件侧正确配置保证中文能正常显示
参考文档
Linux 系统侧 – a 到 b 步骤
https://zhuanlan.zhihu.com/p/338919711https://www.cnblogs.com/xiaoniandexigua/p/17896240.html
Linux 系统侧 – d 步骤
https://man.archlinux.org/man/locale.conf.5.zh_CN
1.1 确认是否有字体库
fc-list若提示“命令无效、未找到命令”等则说明没有字体库 -- 需要【安装字体库】若有输出则说明有字体库 -- 请看【是否有中文字体】 正常输出类似这种会输出当前识别到的所有字体的列表
1.2 确认是否有中文字体
fc-list :langzh-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 :langzh-cn以下字体是新安装的字体
1.3.2 字体库手动添加字体
参考文档https://www.cnblogs.com/xiaoniandexigua/p/17896240.html
1.4 确认当前系统支持显示中文编码类型为 UTF-8 输入以下指令确定当前语言相关的配置系统环境变量
locale要求LANGzh_CN.UTF-8
其中 zh_CN 当前设置的地区日期货币等显示格式以此为准UTF-8 采用的编码格式要为 UTF-8
若是则说明系统已经支持中文环境 -- 请看【远程终端软件的配置】若不是 -- 需要【修改系统语言环境为中文环境】
2. 修改系统语言环境为中文环境 打开配置文件/root/.bashrc 在配置文件中添加相关配置设置环境变量 LANG 的值为 zh_CN.UTF-8 # 将这一行添加到文件的新一行
export LANGzh_CN.UTF-8保存配置文件 使配置文件生效 source /root/.bashrc重开一个新的命令行窗口检查设置是否生效 locale查看LANG的值是否正确 完成以上设置后远程打开一个中文文件其中的中文应该能正常显示了
3. One more thing 完成上面的步骤后远程登录显示的文字无问题了但有可能使用本地终端打开时都是方块字了 究其根本原因本地原生终端runlevel ≤ 3 级别为非常原始的 TTY 终端使用的字体是点阵字体这种点阵字体最多只支持 512 种字符不支持 UTF-8 编码的中文内容 而上面的修改有可能会把系统显示的语言也改成中文导致系统报错、帮助、输出都带中文原生终端都无法显示
解决方案
显示的语言为英文但支持中文 可以理解为如同在华外国人使用的电脑支持装中文软件、看中文文档但系统显示的还是英文 好处日常系统级操作输出是英文能正常显示远程连接打开中文文档由于环境支持也能正常显示 坏处只解决了部分问题若在本地打开中文文档中文仍无法显示换字体即使是残缺的中文也比一个都显示不出来好 参考这个项目https://github.com/oldherl/syllazh 使用一些魔法程序包程序员的力量是无限的如zhcon。项目地址https://zhcon.sourceforge.net/
下面介绍一下第一种方法其他方法由于对系统破坏性较大不建议使用请自行尝试
4. 保证本地终端兼容性设置当前系统语言为英文
参考文章https://man.archlinux.org/man/locale.conf.5.zh_CN 如果要保证系统原生的终端也能正常显示则必须使用英文为语言 否则会出现以下情况远程界面中的中文正常显示但系统原生的终端界面显示的中文就是方块
为兼容两方面的需求可设置为中文语言格式如显示格式、区域、按键布局、但显示如报错提示等用英文
使用localectl命令来实现
localectl set-locale LANGzh_CN.UTF-8 LC_MESSAGESen_US.UTF-8LANG指定语言格式如果不同时设置其他的参数则会自动设置对应的显示语言、键位等参数LC_MESSAGES指定系统输出语言格式相当于指定系统的显示语言
修改后查看localectl状态 修改后需要重启服务器才能生效
可看到在系统原生的终端界面中系统显示语言为英文日常操作输出的都是英文日常系统级操作OK
但实际上这种方法只能供应急使用若在原生终端中打开中文显示字符依旧会是方框 总结要想显示中文还是得远程登录如用 MobaXterm、secureRT 等工具远程登录本地的终端只能显示英文
5. 远程终端软件的配置
MobaXterm 参考我的另一篇笔记MobaXterm基本使用 – 服务器状态、批量操作、字体设置、修复zsh按键失灵