ホームページ > 記事 > ウェブフロントエンド > Unicodeとは何ですか、UTF-8とは何ですか
一直在編碼方面要求不是很高,所以對Unicode和UTF-8也不甚了解。 最近偶然翻到一篇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-2轉換到UCS-4只是簡單的在前面加2個位元組0。
UCS-4則主要用於保存輔助平面,例如Unicode 4.0中的第二個輔助平面
20000-20FFF - 21000-21FFF - - 26000-26FFF - 27000-27FFF - 28000-28FFF - 29000-29FFF - 2A000-2AFFF - 2F000-2FFFF - 2A000-2AFFF - 2F000-2FFFF
codepage=950 繁體中文BIG5
codepage=932 日文
codepage=949 韓文
codepage=866 俄文
codepage=65001 unicode UFT-8 俄文
codepage=65001 unicode UFT-8 理解,應該只是一個虛擬的映射表,實際上只是一個演算法。
前面的編碼是GBK的編碼,後面的是GBKUnicode。
透過查這張表,就能簡單的實作GBK和Unicode之間的轉換。
現在明白了Unicode,那UTF-8又是什麼呢?又為什麼會出現UTF-8呢?
這是“你」的Unicode編碼
依照UTF-8的編碼規則,分解如下:xxxx0100 xx111101 xx100000
把除了x之外的數字拼接在一起,就變成「你」的Unicode編碼了。
經過UTF-8編碼之後,再也不會出現敏感字元了,因為最高位元始終為1。
UnicodeとUTF-8の変換関係表は以下のとおりです。
U-00000000 - U-0000007F: 0xxxxxxx
U-00000080 - U-000007FF: 110xxxxx 10xxxxxx
U-00000800 - U -0000FFFF: 1110xxxx 10xxxxxx 10xxxxxx
U-00010000 - U-001FFFFF: 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
U-00200000 - U-03FFFFFF: 111110xx 10xxxxxx 10xxxxxx 10 xxxxxx 10xxxxxx
U-04000000 - U-7FFFFFFF: 1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
Unicode エンコードを UTF-8 に変換します。x に Unicode バイト ストリームを入れるだけで、UTF-8 になります。