字元編碼,通俗的來說,字元編碼就是按照某種格式某種規定將字元儲存在計算機中。
由於計算機是美國人發明的,因此,最早只有127個字元被編碼到計算機裡,也就是大小寫英文本母、數字和一些符號,這個編碼表被稱為ascii
編碼,比如大寫字母a
的編碼是65
,小寫字母z
的編碼是122
。
但是要處理中文顯然乙個位元組是不夠的,至少需要兩個位元組,而且還不能和ascii編碼衝突,所以,中國制定了gb2312
編碼,用來把中文編進去。
全世界有上百種語言,日本把日文編到shift_jis
裡,南韓把韓文編到euc-kr
裡,各國有各國的標準,就會不可避免地出現衝突,結果就是,在多語言混合的文字中,顯示出來會有亂碼。
因此,unicode應運而生。unicode把所有語言都統一到一套編碼裡,這樣就不會再有亂碼問題了。unicode標準也在不斷發展,但最常用的是用兩個位元組表示乙個字元(如果要用到非常偏僻的字元,就需要4個位元組)。現代作業系統和大多數程式語言都直接支援unicode。
ascii編碼和unicode編碼的區別:ascii編碼是1個位元組,而unicode編碼通常是2個位元組,舉例如下。
字母a
用ascii編碼是十進位制的65
,二進位制的01000001
;
字元0
用ascii編碼是十進位制的48
,二進位制的00110000
,注意字元'0'
和整數0
是不同的;
漢字中
已經超出了ascii編碼的範圍,用unicode編碼是十進位制的20013
,二進位制的01001110 00101101
。
如果把ascii編碼的a
用unicode編碼,只需要在前面補0就可以,因此,a
的unicode編碼是00000000 01000001
。
新問題的又出現了,如果統一成unicode編碼,亂碼問題從此消失了。但是,如果你寫的文字基本上全部是英文的話,用unicode編碼比ascii編碼需要多一倍的儲存空間,在儲存和傳輸上就十分不划算。
因此,又出現了把unicode編碼轉化為「可變長編碼」的utf-8編碼。utf-8編碼把乙個unicode字元根據不同的數字大小編碼成1-6個位元組,常用的英文本母被編碼成1個位元組,漢字通常是3個位元組,只有很生僻的字元才會被編碼成4-6個位元組。如果你要傳輸的文字包含大量英文本元,用utf-8編碼就能節省空間。
字元ascii
unicode
utf-8
a01000001
00000000 01000001
01000001中-
00000000 01000001
11100100 10111000 10101101
在計算機記憶體中,統一使用unicode編碼,當需要儲存到硬碟或者需要傳輸的時候,就轉換為utf-8編碼。
瀏覽網頁的時候,伺服器會把動態生成的unicode內容轉換為utf-8再傳輸到瀏覽器:
如何識別一些常見的編碼形式
url 編碼 url編碼就是乙個字元ascii碼的十六進製制。不過稍微有些變動,需要在前面加上 比如 它的ascii碼是92,92的十六進製制是5c,所以 的url編碼就是 5c。那麼漢字的url編碼呢?很簡單,看例子 胡 的ascii碼是 17670,十六進製制是bafa,url編碼是 ba fa...
常見的矩陣形式
前言 記錄經常用到的矩陣形式。a 正交矩陣定義 一實的正方矩陣q rnxn,稱為正交矩陣,若 b 酉矩陣 定義 一實的正方矩陣u cnxn,稱為酉矩陣,若 c vandermonde矩陣 定義 具有以下形式的mxn階矩陣 稱為vandermonde矩陣,其轉置也是vandermonde矩陣。d to...
常見的幾種介面形式
api作為應用程式程式設計介面,可以使用不同的程式語言進行api的開發,另外介面的表現形式也不同,現在最常用的介面形式有以下這些 1 http 介面 restful 基於http協議開發的介面現在應用是最為廣泛的,這類api使用起來簡單明瞭,因為它是輕量級的 跨平台 跨語言的,但凡是第三方提供的ap...