世界上的文字這麼多,ASCII顯然不夠用,而Unicode的出現就是為了要表示世界上所有的文字。
Unicode就是將每一個字用一組數字對應,稱做 code prints。表示的方式就用U+開頭,後面接16位元表示的數字,例如 A 所對應的 Unicode 就是 U+0041,而中文字的「一」則是 U+4e00。
Unicode可以分成不同的編碼方式,最原始的編碼是UTF-32,也就是每個字都用32-bit來儲存,但可以想像的是如果用這個編碼來儲存資料,檔案的大小會變得超大,另外它對原本的ASCII編碼的檔案也不相容,所以一開始Unicode並沒有被廣泛的使用。直到 UTF-8 的出現,它特殊的編碼方式解決了之前 UTF-32 遇到的問題。
UTF-8 的編碼方式如下:
UTF-8 的數值(二進位表示) | 對應的 Code Print 的數值(二進位表示) | 對應的 Code Print 的範圍 |
0xxxxxxx | xxxxxxx | U+0000 - U+007F |
110xxxxx 10yyyyyy | xxxxxyyyyyy | U+0080 - U+07FF |
1110xxxx 10yyyyyy 10zzzzzz | xxxxyyyyyyzzzzzz | U+0800 - U+FFFF |
11110xxx 10yyyyyy 10zzzzzz 10aaaaaa | xxxyyyyyyzzzzzzaaaaaa | U+10000 - U+1FFFFF |
111110xx 10yyyyyy 10zzzzzz 10aaaaaa 10bbbbbb | xxyyyyyyzzzzzzaaaaaabbbbbb | U+200000 - U+3FFFFFF |
1111110x 10yyyyyy 10zzzzzz 10aaaaaa 10bbbbbb 10cccccc | xyyyyyyzzzzzzaaaaaabbbbbbcccccc | U+4000000 - U+7FFFFFFF |
這樣的編碼方式帶來了許多的優點:
它的優點不只是上面這些,更多細節可以參考這篇文章: 非常經典的 UTF-8... - Gea-Suan Lin's BLOG。
如果你的網站不是用 UTF-8 的方式編碼,那顯然已經落後到看不到別人的車尾燈。要支援 UTF-8 其實很簡單,只要在網頁中head的一開始加上<meta charset="utf-8" />
就可以嘍,不過要注意的是這個meta一定得放在head非常前面的地方,因為瀏覽器一看到這個meta就會停止分析,然後改用指定的編碼方式重新分析網頁。