我們都知道,在計算機的世界裡,資訊的表示方式只有 0 和 1,但是我們人類資訊表示的方式卻與之大不相同,很多時候是用語言文字、影象、聲音等傳遞資訊的。
我們知道乙個二進位制有兩種狀態:」0」 狀態 和 「1」狀態。
我們知道,在計算機中每八個二進位制位組成了乙個位元組(byte),計算機儲存的最小單位就是位元組。
所以早期人們用 8 位二進位制來編碼英文本母(最前面的一位是 0),也就是說,將英文本母和一些常用的字元和這 128 中二進位制 0、1 串一一對應起來,比如說 大寫字母「a」所對應的二進位制位「01000001」,轉換為十六進製制為 41。
在美國,這 128 是夠了,但是其他國家不答應啊,他們的字元和英文是有出入的。
所以各個國家就決定把位元組中最前面未使用的那乙個位拿來使用,原來的 128 種狀態就變成了 256 種狀態。
為了保持與 ascii 碼的相容性,一般最高為為 0 時和原來的 ascii 碼相同,最高位為 1 的時候,各個國家自己給後面的位 (1*** ***x) 賦予他們國家的字元意義。
但是這樣一來又有問題出現了,不同國家對新增的 128 個數字賦予了不同的含義
所以這就成了不同國家有不同國家的編碼方式,所以如果給你一串二進位制數,你想要解碼,就必須知道它的編碼方式,不然就會出現我們有時候看到的亂碼 。
unicode 為世界上所有字元都分配了乙個唯一的數字編號,這個編號範圍從 0x000000 到 0x10ffff (十六進製制),有 110 多萬,每個字元都有乙個唯一的 unicode 編號,這個編號一般寫成 16 進製,在前面加上 u+。例如:「馬」的 unicode 是u+9a6c。
unicode 就相當於一張表,建立了字元與編號之間的聯絡
它是一種規定,unicode 本身只規定了每個字元的數字編號是多少,並沒有規定這個編號如何儲存。
有的人會說了,那我可以直接把 unicode 編號直接轉換成二進位制進行儲存,是的,你可以,但是這個就需要人為的規定了,而 unicode 並沒有說這樣弄,因為除了你這種直接轉換成二進位制的方案外,還有其他方案,接下來我們會逐一看到。
編號怎麼對應到二進位制表示呢?有多種方案:主要有 utf-8,utf-16,utf-32。
utf-8 就是使用變長位元組表示,顧名思義,就是使用的位元組數可變,這個變化是根據 unicode 編號的大小有關,編號小的使用的位元組就少,編號大的使用的位元組就多。使用的位元組個數從 1 到 4 個不等。
utf-8 的編碼規則是:
① 對於單位元組的符號,位元組的第一位設為 0,後面的7位為這個符號的 unicode 碼,因此對於英文本母,utf-8 編碼和 ascii 碼是相同的。
② 對於n位元組的符號(n>1),第乙個位元組的前 n 位都設為 1,第 n+1 位設為 0,後面位元組的前兩位一律設為 10,剩下的沒有提及的二進位制位,全部為這個符號的 unicode 碼 。
utf 8 UTF 8 utf8 在使用中的區別
utf 8 是標準寫法,php在windows下邊英文不區分大小寫,所以也可以寫成 utf 8 utf 8 也可以把中間的 省略,寫成 utf8 一般程式都能識別,但也有例外 如下文 為了嚴格一點,最好用標準的大寫 utf 8 在資料庫中只能使用 utf8 mysql 在mysql的命令模式中只能使...
utf8 utf 8和UTF 8有什麼區別
utf 8 是標準寫法,在windows下邊英文不區分大小寫,所以也可以寫成 utf 8 utf 8 也可以把中間的 省略,寫成 utf8 一般程式都能識別,但也有例外 如下文 為了嚴格一點,最好用標準的大寫 utf 8 b 在mysql資料庫中只能使用 utf8 b 在mysql的命令模式中只能使...
網頁utf 8亂碼 utf8亂碼
複製 在前 在windows作業系統上使用ie作為瀏覽器時。常常會發生這樣的問題 在瀏覽使用utf 8編碼的網頁時,瀏覽器無法自動偵測 即沒有設定 自動選擇 編碼格式時 該頁面所用的編碼。即使網頁已經宣告過編碼格式 由此造成某些含有中文utf 8編碼的頁面產生空白輸出。由於utf 8為3個位元組表示...