目錄
字符編碼
字符編碼說明參考網(wǎng)站
字符編碼
ASCII編碼
ASCII編碼介紹
ASCII編碼表
中文編碼
1. GB2312標(biāo)準(zhǔn)
區(qū)位碼
?2. GBK編碼
3. GB18030
各個標(biāo)準(zhǔn)的對比說明
4. Big5編碼
字符編碼
字符編碼說明參考網(wǎng)站
字符編碼及轉(zhuǎn)換測試:導(dǎo)航菜單 - 千千秀字
Unicode官網(wǎng):Index。
使用舉例:
keil5設(shè)置編碼如下:
字符編碼
????????由于計(jì)算機(jī)只能識別0和1,文字也只能以0和1的形式在計(jì)算機(jī)里存儲,所以我們需要對文字進(jìn)行編碼才能讓計(jì)算機(jī)處理,編碼的過程就是規(guī)定特定的01數(shù)字串來表示特定的文字,最簡單的字符編碼例子是ASCII碼。
ASCII編碼
ASCII編碼介紹
在程序設(shè)計(jì)中使用ASCII編碼表約定了一些控制字符、英文及數(shù)字。它們在存儲器中,本質(zhì)也是二進(jìn)制數(shù),只是我們約定這些二進(jìn)制數(shù)可以表示某些特殊意義,如以ASCII編碼解釋數(shù)字“0x41”時,它表示英文字符“A”。
ASCII編碼表
?
????????ASCII碼表分為兩部分,第一部分是控制字符或通訊專用字符,它們的數(shù)字編碼從0~31,它們并沒有特定的圖形顯示,但會根據(jù)不同的應(yīng)用程序,而對文本顯示有不同的影響。ASCII碼的第二部分包括空格、阿拉伯?dāng)?shù)字、標(biāo)點(diǎn)符號、大小寫英文字母以及“DEL(刪除控制)”,這部分符號的數(shù)字編碼從32~127,除最后一個DEL符號外,都能以圖形的方式來表示,它們屬于傳統(tǒng)文字書寫系統(tǒng)的一部分。
????????后來,計(jì)算機(jī)引進(jìn)到其它國家的時候,由于他們使用的不是英語,他們使用的字母在ASCII碼表中沒有定義,所以他們采用127號之后的位來表示這些新的字母,還加入了各種形狀,一直編號到255。從128到255這些字符被稱為ASCII擴(kuò)展字符集。至此基本存儲單位Byte(char)能表示的編號都被用完了。
中文編碼
????????英文書寫系統(tǒng)都是由26個基本字母組成,利用26個字母組可合出不同的單詞,所以用ASCII碼表就能表達(dá)整個英文書寫系統(tǒng)。而中文書寫系統(tǒng)中的漢字是獨(dú)立的方塊,若參考單詞拆解成字母的表示方式,漢字可以拆解成部首、筆畫來表示,但這樣會非常復(fù)雜(可參考五筆輸入法編碼),所以中文編碼直接對方塊字進(jìn)行編碼,一個漢字使用一個號碼。
????????由于漢字非常多,常用字就有6000多個,如果像ASCII編碼表那樣只使用1個字節(jié)最多只能表示256個漢字,所以我們使用2個字節(jié)來編碼。
比如:
1. GB2312標(biāo)準(zhǔn)
我國首先定義的是GB2312標(biāo)準(zhǔn)。它把ASCII碼表127號之后的擴(kuò)展字符集直接取消掉,并規(guī)定小于127的編碼按原來ASCII標(biāo)準(zhǔn)解釋字符。當(dāng)2個大于127的字符連在一起時,就表示1個漢字,第1個字節(jié)使用 (0xA1-0xFE) 編碼,第2個字節(jié)使用(0xA1-0xFE)編碼,這樣的編碼組合起來可以表示了7000多個符號,其中包含6763個漢字(0xA1十進(jìn)制為161,是遠(yuǎn)遠(yuǎn)超出127的)。在這些編碼里,我們還把數(shù)學(xué)符號、羅馬字母、日文假名等都編進(jìn)表中,就連原來在ASCII里原本就有的數(shù)字、標(biāo)點(diǎn)以及字母也重新編了2個字節(jié)長的編碼,這就是平時在輸入法里可切換的“全角”字符,而標(biāo)準(zhǔn)的ASCII碼表中127號以下的就被稱為“半角”字符。
????????下表說明了GB2312是如何兼容ASCII碼的,當(dāng)我們設(shè)定系統(tǒng)使用GB2312標(biāo)準(zhǔn)的時候,它遇到一個字符串時,會按字節(jié)檢測字符值的大小,若遇到連續(xù)兩個字節(jié)的數(shù)值都大于127時就把這兩個連續(xù)的字節(jié)合在一起,用GB2312解碼,若遇到的數(shù)值小于127,就直接用ASCII把它解碼。?
區(qū)位碼
????????在GB2312編碼的實(shí)際使用中,有時會用到區(qū)位碼的概念。GB2312編碼對所收錄字符進(jìn)行了“分區(qū)”處理,共94個區(qū),每區(qū)含有94個位,共8836個碼位。而區(qū)位碼實(shí)際是GB2312編碼的內(nèi)部形式,它規(guī)定對收錄的每個字符采用兩個字節(jié)表示,第一個字節(jié)為“高字節(jié)”,對應(yīng)94個區(qū);第二個字節(jié)為“低字節(jié)”,對應(yīng)94個位。所以它的區(qū)位碼范圍是:0101-9494。為兼容ASCII碼,區(qū)號和位號分別加上0xA0偏移就得到GB2312編碼。在區(qū)位碼上加上0xA0偏移,可求得GB2312編碼范圍:0xA1A1-0xFEFE,其中漢字的編碼范圍為0xB0A1-0xF7FE,第一字節(jié)0xB0-0xF7(對應(yīng)區(qū)號:16-87),第二個字節(jié)0xA1-0xFE(對應(yīng)位號:01-94)。
????????例如,“啊”字是GB2312編碼中的第一個漢字,它位于16區(qū)的01位,所以它的區(qū)位碼就是1601,加上0xA0偏移,其GB2312編碼為0xB0A1。其中區(qū)位碼為0101的碼位表示的是“空格”符。
?2. GBK編碼
????????據(jù)統(tǒng)計(jì),GB2312編碼中表示的6763個漢字已經(jīng)覆蓋中國大陸99.75%的使用率,單看這個數(shù)字已經(jīng)很令人滿意了,但是不能因?yàn)槟切┪淖植怀S镁筒蛔屗M(jìn)入信息時代,而且生僻字在人名、文言文中的出現(xiàn)頻率是非常高的。
????????為此我們在GB2312標(biāo)準(zhǔn)的基礎(chǔ)上又增加了14240個新漢字(包括所有后面介紹的Big5中的所有漢字)和符號,這個方案被稱為GBK標(biāo)準(zhǔn)。增加這么多字符,按照GB2312原來的格式來編碼,2個字節(jié)已經(jīng)存儲不下,我們的程序員修改了一下格式,不再要求第2個字節(jié)的編碼值必須大于127,只要第1個字節(jié)大于127就表示這是一個漢字的開始,這樣就做到兼容ASCII和GB2312標(biāo)準(zhǔn)了。
????????說明了GBK是如何兼容ASCII和GB2312標(biāo)準(zhǔn)的,當(dāng)我們設(shè)定系統(tǒng)使用GBK標(biāo)準(zhǔn)的時候,它按順序遍歷字符串,按字節(jié)檢測字符值的大小,若遇到一個字符的值大于127時,就再讀取它后面的一個字符,把這兩個字符值合在一起,用GBK解碼,解碼完后,再讀取第3個字符,重新開始以上過程,若該字符值小于127,則直接用ASCII解碼。
如圖
3. GB18030
????????隨著計(jì)算機(jī)技術(shù)的普及,我們后來又在GBK的標(biāo)準(zhǔn)上不斷擴(kuò)展字符,這些標(biāo)準(zhǔn)被稱為GB18030,如GB18030-2000、GB18030-2005等(“-”號后面的數(shù)字是制定標(biāo)準(zhǔn)時的年號),GB18030的編碼使用4個字節(jié),它利用前面標(biāo)準(zhǔn)中的第2個字節(jié)未使用的“0x30-0x39”編碼表示擴(kuò)充四字節(jié)的后綴,兼容GBK、GB2312及ASCII標(biāo)準(zhǔn)。
????????GB18030-2000主要在GBK基礎(chǔ)上增加了“CJK(中日韓)統(tǒng)一漢字?jǐn)U充A”的漢字。加上前面GBK的內(nèi)容,GB18030-2000一共規(guī)定了27533個漢字(包括部首、部件等)的編碼,還有一些常用非漢字符號。
????????GB18030-2005的主要特點(diǎn)是在GB18030-2000基礎(chǔ)上增加了“CJK(中日韓)統(tǒng)一漢字?jǐn)U充B”的漢字。增加了42711個漢字和多種我國少數(shù)民族文字的編碼(如藏、蒙古、傣、彝、朝鮮、維吾爾文等)。加上前面GB18030-2000的內(nèi)容,一共收錄了70244個漢字。
各個標(biāo)準(zhǔn)的對比說明
????????GB2312、GBK及GB18030是漢字的國家標(biāo)準(zhǔn)編碼,新版向下兼容舊版,各個標(biāo)準(zhǔn)簡要說明見下表,目前比較流行的是GBK編碼,因?yàn)槊總€漢字只占用2個字節(jié),而且它編碼的字符已經(jīng)能滿足大部分的需求,但國家要求一些產(chǎn)品必須支持GB18030標(biāo)準(zhǔn)。
文章來源:http://www.zghlxwxcb.cn/news/detail-584135.html
4. Big5編碼
????????在臺灣、香港等地區(qū),使用較多的是Big5編碼,它的主要特點(diǎn)是收錄了繁體字。而從GBK編碼開始,已經(jīng)把Big5中的所有漢字收錄進(jìn)編碼了。即對于漢字部分,GBK是Big5的超集,Big5能表示的漢字,在GBK都能找到那些字相應(yīng)的編碼,但他們的編碼是不一樣的,兩個標(biāo)準(zhǔn)不兼容,如GBK中的“啊”字編碼是“0xB0A1”,而Big5標(biāo)準(zhǔn)中的編碼為“0xB0DA”。文章來源地址http://www.zghlxwxcb.cn/news/detail-584135.html
到了這里,關(guān)于LCD-STM32液晶顯示中英文-(5.字符編碼)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!