国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Linux > 正文

Linux內核如何輸出中文字符的方法示例

2024-08-28 00:03:53
字體:
來源:轉載
供稿:網友

你在Windows/MacOS的登錄Linux的SSH終端上很容易輸入中文并且獲得中文輸出,比如下面這樣:

在這里插入圖片描述

但是卻幾乎不可能將中文顯示在Linux自身的 虛擬終端 上:

[root@localhost font]# echo 皮鞋 >/dev/tty2

在這里插入圖片描述

顯示了兩個問號,顯然Linux內核并不能識別中文。

為什么說是Linux內核不能識別中文呢?這里需要理清一個關系:

你在遠程SSH終端上的輸入和顯示輸出的行為,都是SSH終端的宿主機完成的,比如Windows,MacOS,和Linux無關。 你在Linux本地虛擬終端,比如/dev/tty1上的輸入和顯示輸出行為,則是由Linux內核自己處理的。

比如,我在MacOS用iTerm SSH連接到了一個遠程CentOS Linux,iTerm上的所有的鍵盤輸入,顯示器輸出行為都是iTerm的這臺MacOS宿主機完成的。

相反,如果你直接在這臺CentOS Linux的虛擬終端上輸入并且企圖獲得輸出,那么這個輸入輸出則必須由Linux內核自身來處理。

基本上就這些。至于說為什么Linux內核不支持中文,那要了解Linux內核處理虛擬終端輸入輸出時是如何對待unicode的邏輯,這要涉及一大堆的理論知識,非常煩人。

反正我這里就是無法輸出中文,我也不是做這個的,顯然這不是一個必然要完成的工作任務,所以,我只是玩玩。

本文的目標就是要讓Linux的虛擬終端可以輸出中文。

僅僅是輸出中文,哪怕是一個中文漢字也好。具體來講,就是 當我在鍵盤敲入'A'字符時,顯示器回顯出來的是一個漢字。

所以說,本文并不打算 讓Linux內核大規模完備地支持中文 ,這種事已經有很多人和社區做了,但是可玩性并不高,畢竟這種事是可以當私活兒賺錢的,只要是賺錢的活兒,可玩性就不高,因為要快嘛。

不需要懂冗長枯燥的unicode編碼,不需要懂枯燥的font字體格式,看看怎么玩。

先展示效果吧,下面是一個8×168/times 168×16的點陣例子:

在這里插入圖片描述

不是很好看,于是就做了下面一個28×1628/times 1628×16的點陣:

在這里插入圖片描述

下面說一下這是如何實現的。

從你敲鍵盤的某個按鍵開始,到某個字符最終顯示在虛擬終端的顯示器上,這期間其實有兩個映射:

鍵盤和字符集的映射

將某個按鍵事件轉換為某個字符集里的某個碼,比如當按下'A'鍵時,將其映射到0x41。

字符集和字體的映射

將某個字符集的碼字映射到某個點陣用來顯示。比如將0x41映射到能讓人看出來是一個字符'A'的樣子的8×168/times 168×16點陣。

Linux的console并不能識別超過0x00ff的字符集碼字,因此就不能處理碼字超過0x00ff的unicode,如果希望它能做到,這就要改內核代碼了。

剛才說了,修改內核代碼大規模全面支持中文,這是可以賺錢的事,不但沒意思,也沒人會分享。

所以我嘗試去修改上面的兩個映射來解決問題。由于只是顯示,所以我不會去修改

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 五指山市| 城口县| 平安县| 阜城县| 边坝县| 南阳市| 秭归县| 安西县| 巨鹿县| 崇州市| 甘孜| 沽源县| 石楼县| 恭城| 宝兴县| 潍坊市| 涞源县| 兴国县| 金阳县| 乐清市| 务川| 金坛市| 山东| 页游| 克拉玛依市| 湖南省| 乐平市| 米脂县| 堆龙德庆县| 永康市| 灵寿县| 东乡族自治县| 邵东县| 长泰县| 瑞丽市| 固阳县| 皋兰县| 南华县| 霞浦县| 班玛县| 曲水县|