unicode和utf-8在製作網頁
中對於很多人不是很了解,到底是什麼樣的概念希望通過本文可以讓大家了解,首先說明一下現在常用的一些編碼方案:1、在中國,大陸最常用的就是gbk18030編碼,除此之外還有gbk,gb2312,這幾個編碼的關係是這樣的。
最早制定的漢字編碼是gb2312,包括6763個漢字和682個其它符號;95年重新修訂了編碼,命名gbk1.0,共收錄了21886個符號。之後又推出了gbk18030編碼,共收錄了27484個漢字,同時還收錄了藏文、蒙文、維吾爾文等主要的少數民族文字,現在windows平台必需要支援gbk18030編碼。按照gbk18030、gbk、gb2312的順序,3種編碼是向下相容,同乙個漢字在三個編碼方案中是相同的編碼。
2、台灣,香港等地使用的是big5編碼
3、日本:sjis編碼
如果把各種文字編碼形容為各地的方言,那麼unicode就是世界各國合作開發的一種語言。
在這種語言環境下,不會再有語言的編碼衝突,在同屏下,可以顯示任何語言的內容,這就是unicode的最大好處。那麼unicode是如何編碼的呢?其實非常簡單。就是將世界上所有的文字用2個位元組統一進行編碼。可能你會問,2個位元組最多能夠表示65536個編碼,夠用嗎?南韓和日本的大部分漢字都是從中國傳播過去的,字型是完全一樣的。 比如:「文」字,gbk和sjis中都是同乙個漢字,只是編碼不同而已。那樣,像這樣統一編碼,2個位元組就已經足夠容納世界上所有的語言的大部分文字了。
unicode的學名是"universal multiple-octet coded character set",簡稱為ucs。
現在用的是ucs-2,即2個位元組編碼,而ucs-4是為了防止將來2個位元組不夠用才開發的。ucs-2也稱為基本多文種平面,轉換到ucs-4只是簡單的在前面加2個位元組0。ucs-4則主要用於儲存輔助平面,例如unicode 4.0中的第二輔助平面
20000-20fff - 21000-21fff - 22000-22fff - 23000-23fff - 24000-24fff - 25000-25fff - 26000-26fff - 27000-27fff - 28000-28fff - 29000-29fff - 2a000-2afff - 2f000-2ffff
總共增加了16個輔助平面,由原先的65536個編碼擴充套件至將近100萬編碼。那麼既然統一了編碼,如何相容原先各國的文字編碼呢?這個時候就需要codepage了。
什麼是codepage?codepage就是各國的文字編碼和unicode之間的對映表。
比如簡體中文和unicode的對映表就是cp936,點這裡檢視官方的對映表;以下是幾個常用的codepage,相應的修改上面的位址的數字即可。
codepage=936 簡體中文gbk
codepage=950 正體中文big5
codepage=437 美國/加拿大英語
codepage=932 日文
codepage=949 韓文
codepage=866 俄文
codepage=65001 unicode uft-8
最後乙個65001,據個人理解,應該只是乙個虛擬的對映表,實際只是乙個演算法而已。
從936中隨意取一行,例如:
0x9993 0x6abd #cjk unified ideograph
前面的編碼是gbk的編碼,後面的是unicode。通過查這張表,就能簡單的實現gbk和unicode之間的轉換。
現在明白了unicode,那麼utf-8又是什麼呢?又為什麼會出現utf-8呢?
ascii轉換成ucs-2,只是在編碼前插入乙個0x0。用這些編碼,會包括一些控制符,比如 或 /,這在unix和一些c函式中,將會產生嚴重錯誤。因此可以肯定,ucs-2不適合作為unicode的外部編碼。因此,才誕生了utf-8。那麼utf-8是如何編碼的?又是如何解決ucs-2的問題呢?
例:e4 bd a0 11100100 10111101 10100000
這是「你」字的utf-8編碼
4f 60 01001111 01100000
這是「你」的unicode編碼
按照utf-8的編碼規則,分解如下:***x0100 xx111101 xx100000,把除了x之外的數字拼接在一起,就變成「你」的unicode編碼了。注意utf-8的最前面3個1,表示整個utf-8串是由3個位元組構成的。經過utf-8編碼之後,再也不會出現敏感字元了,因為最高位始終為1。
以下是unicode和utf-8之間的轉換關係表:
u-00000000 - u-0000007f: 0******x
u-00000080 - u-000007ff: 110***xx 10******
u-00000800 - u-0000ffff: 1110***x 10****** 10******
u-00010000 - u-001fffff: 11110*** 10****** 10****** 10******
u-00200000 - u-03ffffff: 111110xx 10****** 10****** 10****** 10******
u-04000000 - u-7fffffff: 1111110x 10****** 10****** 10****** 10****** 10******
unicode編碼轉換到utf-8,簡單的把unicode位元組流套到x中就變成utf-8了。
什麼是HTML檔案?
什麼是html檔案?html的英文全稱是hypertext marked language,中文叫做 超文字標記語言 和一般文字的不同的是,乙個html檔案不僅包含文字內容,還包含一些tag,中文稱 標記 乙個 html檔案的字尾名是.htm或者是.html。用文字編輯器就可以編寫html檔案。這就...
什麼是HTML檔案?
什麼是html檔案?html的英文全稱是hypertext marked language,中文叫做 超文字標記語言 和一般文字的不同的是,乙個html檔案不僅包含文字內容,還包含一些tag,中文稱 標記 乙個html檔案的字尾名是.htm或者是.html。用文字編輯器就可以編寫html檔案。這就試...
HTML教程(1) 什麼是HTML
博主個人主頁 這是我發布的第一篇系列教程 雖然我自己的技術還不怎麼樣 但是我想將我學習到的知識分享出來 所以才想到寫這麼一篇系列的教程來幫助正在學習前端的童鞋們 我會一直發布 從 html css js 等 希望看到我發布的朋友們能夠關注一下 我們一塊進步 可能寫的不好 歡迎大神們指出不好的地方 我...