字元編碼簡單說明

2021-08-14 06:21:06 字數 1644 閱讀 1184

編碼可以指定總結

這裡的字元指所有文字(漢字英文日文等)、數字、符號(中英等符號、數學符號等)

首先資料都是儲存在介質(比如磁碟)上的,然後資料儲存的形式都是位元組形式。

位元組是8位元資料,就是有八位二進位制的01序列組合。所有資料都是以01010111這種01序列儲存的。

你肯定是在想,只用01就能儲存我們看到的所有文字、符號好神奇啊。

其實很簡單,就是一一對應的關係。

讓我們從設計這的角度考慮問題,假如要讓計算機顯示字元,那麼方案就是,我先把所有要顯示的字元都預定義了,然後做一張位元組和這些預定義字元的對應表,傳輸的時候,你給我位元組,我去檢視我對應表裡面這個位元組對應哪個字元,然後我就把對應的字元顯示出來。

舉個例子,我傳遞乙個位元組0100 0001給計算機,計算機檢視0100 0001對應ascii碼表中的控制圖形是a。然後顯示a。

就是這麼簡單。編碼表,其實也就是乙個位元組與預定義字元的對應表。

首先是ascii表,這是第一張編碼表。人家美國覺得自己2大小寫字母56個,再加上數字0到9共66個,然後再加一些符號啥的覺得用乙個位元組就行了,乙個位元組8位二進位制,有256種組合,可以滿足我所有的需求,然後就去用了。

後來計算機發展,所有國家都要用計算機了,我們也要在計算機上顯示我們的文字,比如我們國家。說我們也要顯示自己的語言文字標點符號,但是乙個位元組也就是256種組合不夠啊我們漢字這個多,那就兩個位元組65 536種組合吧,前256個組合還是原來的ascii表的內容,把這些漢字等字元錄入進中文系統去了,有了自己的對應表gb2312編碼表。

然後台灣說我們用繁體啊,我們也要顯示啊,就有了它們自己的編碼表。

這幾個編碼表的對應情況都不一樣(大多相容ascii表),然後國際組織看不下去了,說你們這樣太混亂了,這麼多編碼表,自己倒是爽了但是一點也不international,我們考察了全世界所有的文字圖形符號,全部錄入進去了,我們每個字元用三個字元表示,共16 777 216種組合,命名為unicode,全部用我的把。這樣世界就通用了。

其它國家說好是好,但是我們原先儲存乙個字元用兩個位元組就行了,用你的編碼表乙個字元變成了三個位元組,這樣的話我們儲存本來1g的資料現在要用1.5g的空間,太浪費了。

utf8是對unicode編碼表的再編碼,對不同範圍的字元使用不同長度的編碼,前面256組合與ascii表一致使用乙個位元組表示,漢字等使用三個位元組表示。主要再使用中文的國家流行。

字元編碼就是乙個編碼表,就是指定你使用什麼編碼表儲存資料,讀取資料。

比如,我要建立乙個資料庫,建立的時候就要為資料庫指定編碼,就是資料儲存時候使用哪個碼表。

再比如我有乙個utf8編碼的txt文件,但是我以gb2312編碼開啟,就會亂碼,這是因為我磁碟上的01序列你讀取的時候沒有按照儲存時用的碼表讀取,對應關係都錯了自然不能正確顯示字元。

再比如我有個utf8編碼的網頁,我再瀏覽器種設定網頁編碼方式為gb2312,就亂碼了。

請注意,雖然視音訊也是位元組儲存,但是不和字元一樣,這也是視音訊檔案也可以用記事本開啟原因(雖然是亂碼)

1、資料儲存再磁碟上的形式?

位元組形式儲存。乙個位元組是8位元即8位二進位制。

2、為什麼出現編碼表?

為了顯示文字元號,需要有讓位元組與要顯示的預定義文字元號一一對應的對應表,即編碼表。世界上各個地區出於對儲存資料的容量等的考慮,使用不同的編碼表。

常用編碼簡單說明

ascii編碼 這是最早的一種編碼,很多其他的編碼都會相容ascii編碼,ascii編碼只包含常用的英文本母,數字,以及一些特殊字元,還有部分控制字元。每個字元由占用乙個位元組的儲存空間,因為最多隻包含127個字元,而乙個位元組 8bit 最多可以存256 2 8 個字元,故其最高位都為0。例如大寫...

FormatMessage簡單說明

常用引數簡介.formatmessage format message from system format message allocate buffer,null,lval,null,lptstr hlocal,0,null 第乙個引數是標誌,告訴這個formatmessage函式,我想要的特點...

Subversion 簡單說明

subversion 簡單說明 checkout 從源 管理伺服器取出 commit 提交更新的 到源 管理伺服器。update 從源 管理伺服器獲取 的最新更新。export 從源 管理伺服器匯出 匯出的 將脫離源 管理。revert 將當前資料恢復到最近與伺服器同步的版本,即放棄自己的所有未提交...