輸入法中的全形與半形

2021-09-02 19:40:47 字數 1802 閱讀 3939

問:輸入法為什麼有全形半形之分

這要從發展史說起:

1. 二進位制

計算機普遍遵循馮諾依曼結構體系,它規定了計算機內部以二進位制為主要數制(這和電路有關),所以計算機只認識二進位制的0或1。其它符號比如十進位制的[2-9],字母[a-za-z],標點符號,中文等等是不認識的。那麼,當我們說"a"的時候,它是怎麼理解的呢?

2. 編碼表

即然計算機只認識01符號,那我們就可以建立一套"對映系統",比如

a <--> 00000001

b <--> 00000010

c <--> 00000011

當我們說"a"的時候,計算機就理解為"00000001",即乙個符號,用一串唯一的二進位制表示,這套"對映系統"就稱為編碼表。

3. ascii編碼表

因為早期的計算機只在發達的歐美國家使用,所以這套"對映系統"是根據英文規則設計的,叫ascii表,規定用8位長度的二進位制表示乙個字元,最多可以表示 2^8 = 256 個字元。ascii表涵蓋了英文本母,數字,和常用的英文符號,比如",.+-"等,

可普通漢字就有6萬多個,很明顯8位的ascii編碼方案滿足不了中文系統的要求,比如中文 "啊"就無法用ascii表示。

4. 中文編碼表

由上我們知道,只要再設計一套

長度更大

的"對映系統"就可以解決問題了,比如

啊 = 00000000 00000001

哦 = 00000000 00000010

即使用16位二進位制(兩位元組)表示乙個漢字,最多可表示 2^16 = 65536 個。

早期中文系統設計的時候,是用gb2312標準,但這套標準有部分的漢字,符號,少數民族用語是沒有對映過去的,比如在gb2312中就打不出「鎔"字,所以往後就出了編碼範圍更大的編碼表,如gbk,gb18030。這些編碼表只有乙個區別,就是能表示的漢字或符號範圍越來越大了,但相應的,需要對映的二進位制位數也越來越大了,即漢字可能需要用2-4位位元組(16-32位二進位制)表示,儲存成本增加了。

5. 全形與半形

綜上,我們知道

5.1計算機只認識二進位制01,所有的字形符號都是通過編碼表(對映系統)翻譯實現的

5.2在英文系統的編碼表裡,有用一位元組表示的標點符號,如英文逗號","

5.3在中文系統的編碼表裡,有用n(1-4)位元組表示的標點符號,如中文逗號",」

語義上我們統稱為逗號,但計算機實際表現形式是不同的

英文逗號"," 在ascii規則下是 00101100,一位元組長,螢幕列印寬度是乙個寬度

中文逗號"," 在gbk規則下是 10100011 10101100,兩位元組長,螢幕列印寬度是兩個寬度

半形就是指 ascii 編碼表以內的標點符號,它們都是佔乙個位元組,乙個列印寬度的

全形就是指在ascii編碼表以外,如gbk,big5, unicode等編碼規則下的,多位元組的標點符號,螢幕列印寬度通常是兩個寬度,即乙個漢字寬度。

簡言之,ascii以內的就叫半形符號,以外的就叫全形符號。

6. 回答樓主問題

為什麼中文輸入法會提供全形半形切換的功能,主要目的我猜是這樣的

1. 中文編碼表 (gb2312/gbk..) 向下相容ascii,但出現了符號衝突,比如有英文逗號,和中文逗號,當使用者想輸入逗號時,不知道該給出ascii表內的逗號,還是中文編碼表中的逗號。有了全形和半形,使用者就可以自己選擇,而不用切換成其它輸入法了。

2. 中文對齊與美觀

3. 儲存成本,半形只佔一位元組,全形佔多位元組

輸入法的全形和半形區別?

全月亮是全形,半個月亮是半形 全形佔兩個位元組,半形佔乙個位元組。半形全形主要是針對標點符號來說的,全形標點佔兩個位元組,半形佔乙個位元組,而不管是半形還是全形,漢字都還是要佔兩個位元組 在程式設計序的源 中只能使用半形標點 不包括字串內部的資料 在不支援漢字等語言的計算機上只能使用半形標點 其實這...

對輸入法中全形半形和中英文輸入法的理解

之所以有這樣的區別,簡單說就是中文系統用雙位元組顯示漢字造成的與世界標準 由美國制訂的 不一的問題。說白了,對我們來說就是只針對中文的字型檔才有全形半形的說法。1 全形 漢字字元和規定了全形的英文本元及國標gb2312 80中的圖形符號和特殊字元都是全形字符。全形字符在編碼上佔兩個位元組的寬度。國標...

輸入法中的全形和半形對編譯的影響

今天出現了乙個奇怪的現象,不小心把輸入法改成全形了,在 中敲入空格鍵,然後就報錯。後來我查了一下什麼是全形和半形 1 全形 指乙個字元占用兩個標準字元位置。漢字字元和規定了全形的英文本元及國標gb2312 80中的圖形符號和特殊字元都是全形字符。一般的系統命令是不用全形字符的,只是在作文書處理時才會...