回覆列表
  • 1 # 吾愛lu

    全形佔兩個位元組,半形佔一個位元組。

    半形全形主要是針對標點符號來說的,全形標點佔兩個位元組,半形佔一個位元組,而不管是半形還是全形,漢字都還是要佔兩個位元組

    在程式設計序的原始碼中只能使用半形標點(不包括字串內部的資料)

    在不支援漢字等語言的計算機上只能使用半形標點(其實這種情況根本就不存在半形全形的概念)

    其他時候好像基本上沒怎麼區分全形和半形,你覺得那種寫著好看就用哪種吧

    ,.?"! ……這些是半形的

    ,。?‘! ……這些是全形的

    對於大多數字體來說,全形看起來比半形大,當然這不是本質區別了

    有很多網友不理解全形和半形的區別,也不知道全形標準標點的輸入方法。

    什麼是全形標準標點?全形是指標點所佔的地方,是一個漢字的大小或一半。標點是全形,所以就不是“,”, 而是“,”不是“.”而是“。”

    看出下面兩個片語所用標點符號的區別了嗎?前一個是半形的雙引號,下一個是全形的雙引號。

    至於標準標點符號,是指符合國家標準,比如不是〈>做書名號而是《》做書名號,省略號……要這樣寫,而不是...,或。。。等。具體請參見下面的參考文獻:國家標準標點符號用法。

    現在以“智慧ABC輸入法”為例作一個簡介,其他輸入法大同小異,大家可以舉一反三:

    ①漢字輸入過程中我們常需要在半形和全形之間切換,我們可以用滑鼠左鍵單擊"輸入法狀態條"上的"全形/半形切換"按鈕來變換全形和半形;另外,我們也可以透過熱鍵Shift+空格鍵切換。當"全形/半形切換"按鈕上的圖案是整個月亮狀時說明當前是全形輸入方法,而"月牙"狀時則是半形輸入。

  • 2 # TonyDeng

    所謂全形字元,是作為擴充套件字元(即非ASCII字元)對待的。

    最早的計算機字元編碼,由於是拼音文字,總字元數(連大小寫)不超過100個,所以設計時用127個數字來代表127個字元。比如數字32代表空格,這個空格就是半形空格;97代表大寫字母A,等等。32之前的數字,用於控制字元,比如13是回車,10是換行。從32到127的字元,叫可列印字元,是可以用於列印輸出的(在螢幕上顯示也是列印輸出)。這種用數字代表字元的做法,叫字元編碼ASCII方案。字元編碼本質上與密碼錶一樣,其實是可以修改的,不是非要用32代表空格,程式設計師完全可以自己另外做一個對照方案,那就是加密。

    127之後的編碼,叫擴充套件編碼,一般用於表示表格線之類特殊符號,以及一些特殊的英文、法文字母。在純英文字元介面的系統中,就能看到這些字元。

    256個數字,對二進位制來說,是8位的,屬於1個位元組(Byte),所以ASCII編碼體系下的系統,用1位元組來計算單個字元佔用的空間,這就是char型別。

    隨著計算機的全球化,不同語言的文字元號越來越多,這些字元數量非常龐大,遠遠超過256。當數量超過256,1位元組就不夠了,所以計算機科學家把容量擴充套件到2位元組,2位元組可以代表65536個字元,對前面127個數字,繼續維持原來的編碼方案不變,127後面的數字,就代表非英語系的字元。如果把這個容量的空間全部用盡,就可以代表六萬多個字元。對漢字來說,GBK2位元組方案實際編碼的字元數是兩萬個漢字(要留給其他語言的使用),包括了中日韓字元。

    由於字元數量的擴大,字型複雜,在列印輸出時,每個字元佔用的幾何空間也相應增大,一般來說,1個擴充套件字元字型佔用2個傳統ASCII字型的寬度(隱含與2位元組是1位元組的兩倍對應),這就是平時我們看到一個漢字基本上佔用兩個英文字元寬度的原因。

    在字元介面系統如DOS和Linux等顯示屏上,字元圖案是等寬的,嚴格地按照一個擴充套件字元寬度是兩個ASCII字元寬度的輸出。但在圖形系統上,不是所有字型都是等寬圖案,那樣輸出是不嚴格等於兩個ASCII的,這種字型每個字型的寬度都不一樣。但在內部編碼上,卻是嚴格2位元組、1位元組地編碼的。

    由於等寬字型的存在,為了美觀,人們設計了非ASCII編碼的空格,用於輸出兩個ASCII寬度的空白,這個字元就叫做全形空格。正如前面說的,對非等寬字型,這種全形空格是沒意義的。除了全形空格,實際上還有與ASCII對應的全形字元,包括全形英文字母等。

    至於為什麼是從127開始擴充套件碼,以及程式如何判斷ASCII字元還是漢字,為什麼會出現亂碼,漢字系統又是怎麼回事,除了2位元組編碼還有更廣的4位元組(unicode-32)編碼和不定長編碼(utf-8)方案,等等,說來話長,就不在這裡解釋了。

  • 中秋節和大豐收的關聯?
  • jul是幾月份?