企業(yè)網(wǎng)站管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)網(wǎng)絡(luò)營(yíng)銷與直播電商專業(yè)學(xué)什么
注意:這里主要解決的是圖形界面、遠(yuǎn)程登錄界面的中文亂碼問題
系統(tǒng)原生的終端(如虛擬機(jī)系統(tǒng)顯示的終端),由于使用的是十分原始的 TTY 終端,使用點(diǎn)陣字體進(jìn)行顯示,點(diǎn)陣字體不支持中文,因此無法顯示中文
關(guān)于此問題的討論見倒數(shù)第 3 章【One more thing】
0. 一些好看的字體
https://www.thosefree.com/design/fonts
- 黑體:鴻蒙字體 HarmonyOS Sans SC、OPPO Sans、MI Sans
- 宋體:思源宋體
- 楷體:霞鶩文楷
- 趣味體:得意黑
- 標(biāo)題黑體:金山云技術(shù)體、龐門正道標(biāo)題體
- 通用字體(非官方,中文+等寬英文的組合):微軟雅黑Mono、微軟雅黑-JBMono
1. 字體配置:解決顯示亂碼問題
總體思路:- Linux 系統(tǒng)側(cè):正確安裝好中文字體
- 確認(rèn)是否有字體庫(kù) --> 沒有則【安裝字體庫(kù)】
- 確認(rèn)是否有中文字體 --> 沒有則【安裝中文字體】,有以下兩種安裝方法:
- 可通過【軟件包安裝】部分官方中文字體
分析:簡(jiǎn)單,只需要會(huì)安裝軟件包即可;但只能安裝幾種官方字體 - 也可手動(dòng)將中文字體文件【手動(dòng)添加到字體庫(kù)】中
分析:操作比較復(fù)雜,要改配置;但可安裝任意類型的字體
- 可通過【軟件包安裝】部分官方中文字體
- 確認(rèn)當(dāng)前【系統(tǒng)語言格式為中文格式】
- (若要保證系統(tǒng)原生終端正常顯示英文) 修改當(dāng)前【系統(tǒng)語言為英文】
- 遠(yuǎn)程軟件側(cè):正確配置,保證中文能正常顯示
參考文檔:
Linux 系統(tǒng)側(cè) – a 到 b 步驟:
- https://zhuanlan.zhihu.com/p/338919711
- https://www.cnblogs.com/xiaoniandexigua/p/17896240.html
Linux 系統(tǒng)側(cè) – d 步驟:
- https://man.archlinux.org/man/locale.conf.5.zh_CN
1.1 確認(rèn)是否有字體庫(kù)
fc-list
- 若提示“命令無效、未找到命令”等,則說明:沒有字體庫(kù) --> 需要【安裝字體庫(kù)】
- 若有輸出,則說明:有字體庫(kù) --> 請(qǐng)看【是否有中文字體】
正常輸出類似這種:會(huì)輸出當(dāng)前識(shí)別到的所有字體的列表
1.2 確認(rèn)是否有中文字體
fc-list :lang=zh-cn
- 查到有文字列表:說明有中文字體,列出的字體就是中文字體 --> 請(qǐng)看【確認(rèn)當(dāng)前系統(tǒng)顯示的語言為中文】
- 查詢沒報(bào)錯(cuò)但沒有輸出:說明沒有中文字體 --> 需要【安裝中文字體】
以下是示例,查詢的是日文的字體,顯示如果【沒有輸出】是啥樣的
- 查詢報(bào)錯(cuò):字體庫(kù)沒有安裝成功,參考【Linux 系統(tǒng) a-b 步驟】的參考文檔,重新安裝
1.3 安裝中文字體
1.3.1 安裝中文字體軟件包
這里安裝【文泉驛正黑】字體,這是一款免費(fèi)、開源、可免費(fèi)商用字體
字體介紹:http://wenq.org/wqy2/index.cgi
安裝命令
sudo dnf install -y fonts-wqy-zenhei
安裝后刷新字體庫(kù)
fc-cache -f -v
重新檢查是否有安裝的字體
fc-list :lang=zh-cn
以下字體是新安裝的字體
1.3.2 字體庫(kù)手動(dòng)添加字體
參考文檔:https://www.cnblogs.com/xiaoniandexigua/p/17896240.html
1.4 確認(rèn)當(dāng)前系統(tǒng)支持顯示中文(編碼類型為 UTF-8)
輸入以下指令,確定當(dāng)前語言相關(guān)的配置(系統(tǒng)環(huán)境變量)locale
要求LANG=zh_CN.UTF-8
其中 zh_CN = 當(dāng)前設(shè)置的地區(qū),日期貨幣等顯示格式以此為準(zhǔn),UTF-8 = 采用的編碼格式,要為 UTF-8
- 若是,則說明系統(tǒng)已經(jīng)支持中文環(huán)境 --> 請(qǐng)看【遠(yuǎn)程終端軟件的配置】
- 若不是 --> 需要【修改系統(tǒng)語言環(huán)境為中文環(huán)境】
2. 修改系統(tǒng)語言環(huán)境為中文環(huán)境
-
打開配置文件:
/root/.bashrc
-
在配置文件中添加相關(guān)配置(設(shè)置環(huán)境變量 LANG 的值為 zh_CN.UTF-8)
# 將這一行添加到文件的新一行 export LANG="zh_CN.UTF-8"
-
保存配置文件
-
使配置文件生效
source /root/.bashrc
-
重開一個(gè)新的命令行窗口,檢查設(shè)置是否生效
locale
查看
LANG
的值是否正確
完成以上設(shè)置后,遠(yuǎn)程打開一個(gè)中文文件,其中的中文應(yīng)該能正常顯示了
3. One more thing
完成上面的步驟后,遠(yuǎn)程登錄顯示的文字無問題了,但有可能使用本地終端打開時(shí),都是方塊字了
究其根本原因:本地原生終端(runlevel ≤ 3 級(jí)別)為非常原始的 TTY 終端,使用的字體是點(diǎn)陣字體,這種點(diǎn)陣字體最多只支持 512 種字符,不支持 UTF-8 編碼的中文內(nèi)容
而上面的修改,有可能會(huì)把系統(tǒng)顯示的語言也改成中文,導(dǎo)致系統(tǒng)報(bào)錯(cuò)、幫助、輸出都帶中文,原生終端都無法顯示
解決方案:
- 顯示的語言為英文,但支持中文
可以理解為如同在華外國(guó)人,使用的電腦支持裝中文軟件、看中文文檔,但系統(tǒng)顯示的還是英文
好處:日常系統(tǒng)級(jí)操作輸出是英文,能正常顯示;遠(yuǎn)程連接打開中文文檔由于環(huán)境支持也能正常顯示
壞處:只解決了部分問題,若在本地打開中文文檔,中文仍無法顯示 - 換字體,即使是殘缺的中文也比一個(gè)都顯示不出來好(?)
參考這個(gè)項(xiàng)目:https://github.com/oldherl/syllazh
- 使用一些魔法程序包(程序員的力量是無限的😎)如
zhcon
。項(xiàng)目地址:https://zhcon.sourceforge.net/
下面介紹一下第一種方法,其他方法由于對(duì)系統(tǒng)破壞性較大,不建議使用,請(qǐng)自行嘗試
4. (保證本地終端兼容性)設(shè)置當(dāng)前系統(tǒng)語言為英文
參考文章:https://man.archlinux.org/man/locale.conf.5.zh_CN
如果要保證系統(tǒng)原生的終端也能正常顯示,則必須使用英文為語言
否則會(huì)出現(xiàn)以下情況:遠(yuǎn)程界面中的中文正常顯示,但系統(tǒng)原生的終端界面顯示的中文就是方塊
為兼容兩方面的需求,可設(shè)置為:中文語言格式(如顯示格式、區(qū)域、按鍵布局)、但顯示(如報(bào)錯(cuò)提示等)用英文
使用localectl
命令來實(shí)現(xiàn)
localectl set-locale LANG="zh_CN.UTF-8" LC_MESSAGES="en_US.UTF-8"
LANG=
指定語言格式(如果不同時(shí)設(shè)置其他的參數(shù),則會(huì)自動(dòng)設(shè)置對(duì)應(yīng)的顯示語言、鍵位等參數(shù)LC_MESSAGES=
指定系統(tǒng)輸出語言格式,相當(dāng)于指定系統(tǒng)的顯示語言
修改后查看localectl
狀態(tài)
修改后需要重啟服務(wù)器才能生效
可看到,在系統(tǒng)原生的終端界面中,系統(tǒng)顯示語言為英文,日常操作輸出的都是英文,日常系統(tǒng)級(jí)操作OK
但實(shí)際上這種方法只能供應(yīng)急使用,若在原生終端中打開中文顯示字符依舊會(huì)是方框
總結(jié):要想顯示中文,還是得遠(yuǎn)程登錄(如用 MobaXterm、secureRT 等工具遠(yuǎn)程登錄),本地的終端只能顯示英文
5. 遠(yuǎn)程終端軟件的配置
MobaXterm 參考我的另一篇筆記:MobaXterm基本使用 – 服務(wù)器狀態(tài)、批量操作、字體設(shè)置、修復(fù)zsh按鍵失靈