unicode字元顯示方框 掃盲字元編碼

2021-10-12 08:04:30 字數 2803 閱讀 3094

引言

想必大家之前一定 會被字元編碼困惑。ascii,gb2312,unicode,gb18030等等,或者說大家遇到過檔案亂碼問題。那麼這一系列的編碼到底是什麼?他們之間又會有什麼區別?又為什麼產生亂碼問題?

大家應該知道,我們現在的計算機都是二進位制,在通俗的來講,就是01構成!那麼問題來了。我們人類交流的主要方式是語言,而語言往往是由大量的符號構成的,所以很自然的就會想到使用二進位制編碼,對應到指定的符號,即乙個唯一的編碼對應乙個唯一的符號。在這裡說兩個概念;

細心的讀者可能有所發現,沒錯,上面的那些ascii等,都有自己的字符集和字元編碼,其中字元編碼就一一對應自己字符集內的所有內容

當初計算機是在美國流行起來的,所以當他們考慮計算機顯示文字的問題時,想到的肯定只有字母。於是乎,ascii(americanstandardcode forinformationinterchange,美國資訊交換標準**)編碼便呼之欲出。

下圖便是ascii表(數字**和符號的對應關係)

在ascii中規定:乙個位元組所對應乙個符號。在計算機中,乙個位元組包含8位,乙個位元組所能表示的不同狀態也只有:256個(

) 。就像上圖:符號a,所對應的數字編碼為:0100 0001。

但是需要注意的是在ascii字符集中,只有128個符號,因此ascii內,128的對應關係。其中前32個符號,是非顯示字元(計算機顯示)。

隨著計算機的發展到歐洲,由於歐洲人們也有著自己的語言,於是就對ascii進行了拓展,把剩下的128個也建立了對應關係,來表示歐洲地區的字元,並命名為:eascii

聰明的各位可能就就要問了,歐洲,美洲都把256個對應關係都用光了,我們大中國怎麼辦?我們博大精深的文字如何表示?此時此刻,gb***x字符集&編碼就誕生了!(這裡的x僅代表數字)。

gb開頭的就是我們中國的字元編碼。gb就是國標的首字母大寫。下面的圖是2312的對應規則。

具體規則:

在gb2312中規定:個位元組所對應乙個符號。

q:為什麼ascii乙個位元組表示,而gb2312用兩個符號表示?

a:親,因為咱們的字多呀!兩個位元組可以有65536個對應狀態(

可能又要有人問了,不同國家的字元編碼不同,那麼如何保證資訊的準確性?如果我在中國寫好的文件,跑到美國去,那我的文件豈不是要亂了?其實在unicode沒有出世之前的確是這個樣子的。隨著網際網路的出現,全世界的人們都在用自己的語言去共享著資訊,如果所使用編碼不統一,勢必會產生亂碼的情況的。

那麼只有乙個解決方式:將世界上所有的文字都去遵循同一種編碼方式。這個方法看樣子是不是很難實現?但是他已經被unicode去實現了,所以unicode是乙個很偉大的編碼方式;

unicode(中文:萬國碼、國際碼、統一碼、單一碼)是電腦科學領域裡的一項業界標準。它對世界上大部分的文字系統進行了整理、編碼,使得電腦可以用更為簡單的方式來呈現和處理文字。
說人話就是:將世界上所有的符號都納入其中,並且都有與之對應的關係;

(最新的unicode14.0編碼規範要在2023年3月發布,由於疫情故推遲到2023年9月發表。)

在unicode值得注意的是:unicode僅僅規範了符號的編碼方式,但是對於儲存的方式並沒有對此說明。

因為有的符號僅需要乙個位元組,有的需要多個位元組。比如,漢字的 unicode 是十六進製制數4e25,轉換成二進位制數足足有15位(100111000100101),也就是說,這個符號的表示至少需要2個位元組。表示其他更大的符號,可能需要3個位元組或者4個位元組,甚至更多。如果全都以:四個位元組去儲存,由於較小值的編碼點一般使用頻率較高,直接使用unicode編碼效率低下,大量浪費記憶體空間。utf-8就是來解決這個問題的。即解決unicode儲存問題。(後面的8就是以8位為單元進行編碼)

utf-8的編碼規範:

1)對於單位元組的符號,位元組的第一位設為0,後面7位為這個符號的 unicode 碼。因此對於英語字母,utf-8 編碼和 ascii 碼是相同的。

2)對於n位元組的符號(n > 1),第乙個位元組的前n位都設為1,第n + 1位設為0,後面位元組的前兩位一律設為10。剩下的沒有提及的二進位制位,全部為這個符號的 unicode 碼。

至此,計算機表示語言的方式(即編碼規範)基本大勢已定,絕大多數都是unicode編碼,utf-8儲存。從此以後互聯時代得到了飛速發展。全世界人們儘管語言不同,但是表示語言的方式完全統一!使得全球互聯,世界互惠,人們互通!故此致敬各位前輩在字元編碼上所付出的努力!

ascii,unicode 和 utf-8 by阮一峰的網路日誌

utf-8 by維基百科

字符集和字元編碼 by吳秦

Wpf中顯示Unicode字元

今天在寫乙個小工具,裡面有些字元用unicode字元表示更合適。但是一時之間卻不知道怎麼寫了。經過一番查詢,終於找到了辦法。記到這裡,一是加深印象,二則以備查詢。比如 其unicode編碼是0x0025,在c 中如下表示 var percentage u0025 注意,表示方法是 u unicode...

Mathtype 公式顯示方框

公式編輯器mathtype中一些符號顯示方框,如何解決呢?出現這個問題的原因是這是因為windows中的mtextra.ttf 顯示為mt extra truetype 字型檔案不存在或版本太低,解決方法如下 1,檢視windows資料夾下的fonts中是否有mtextra.ttf 顯示為mt ex...

Unicode編碼字元的點陣顯示

對於unicode編碼的字元,可以先將unicode編碼轉換為gbk編碼,然後利用gbk點陣字型檔 gbk.bin 顯示字元。乙個比較好的編碼轉換方法是,製作乙個按照unicode編碼順序排列的gbk編碼表,直接根據unicode編碼就可以查到對應的gbk編碼,具體的製作方法如下 上以篇文章中已經製...