UTF小記(一)

前言

十六進制(簡寫爲hex或下標16)在數學中是一種逢16進1的進位制。通常用數字0到9和字母A到F(或a~f)表示,其中:A~F表示10~15,這些稱做十六進制數字。
不一樣電腦系統編程語言對於16進制數值有不一樣的表示方式:
1.   C語言、C++、ShellPythonJava語言及其餘相近的語言使用字首「0x」,例如「0x5A3」。開頭的「0」令解析器更易辨認數,而「x」則表明十六進制(就如「O」表明八進制)。在「0x」中的「x」能夠大寫小寫。對於字符量C語言中則以x+兩位十六進制數的方式表示,如xFF。
2.  在HTML,十六進制字元能夠用「x」,例如֣和֣效果應該無異。

1. UTF-8 

UTF-88-bit Unicode Transformation Format)是一種針對Unicode的可變長度字符編碼,也是一種前綴碼。它能夠用來表示Unicode標準中的任何字符,且其編碼中的第一個字節仍與ASCII兼容,這使得原來處理ASCII字符的軟件無須或只須作少部分修改,便可繼續使用。所以,它逐漸成爲郵箱網頁及其餘存儲或發送文字的應用中,優先採用的編碼。

UTF-8使用一至六個字節爲每一個字符編碼(儘管如此,2003年11月UTF-8被RFC 3629從新規範,只能使用原來Unicode定義的區域,U+0000到U+10FFFF,也就是說最多四個字節):php

  1. 128個US-ASCII字符只需一個字節編碼(Unicode範圍由U+0000至U+007F)。
  2. 帶有附加符號拉丁文希臘文西裏爾字母亞美尼亞語希伯來文阿拉伯文敘利亞文它拿字母則須要兩個字節編碼(Unicode範圍由U+0080至U+07FF)。
  3. 其餘基本多文種平面(BMP)中的字符(這包含了大部分經常使用字,如大部分的漢字)使用三個字節編碼(Unicode範圍由U+0800至U+FFFF)。
  4. 其餘極少使用的Unicode 輔助平面的字符使用四至六字節編碼(Unicode範圍由U+10000至U+1FFFFF使用四字節,Unicode範圍由U+200000至U+3FFFFFF使用五字節,Unicode範圍由U+4000000至U+7FFFFFFF使用六字節)。

換句話說,其編碼規則以下:算法

  1. 字符代碼在000000 – 00007F之間的,用一個字節編碼;
  2. 000080 – 0007FF之間的字符用兩個字節;
  3. 000800 – 00D7FF 和 00E000 – 00FFFF之間的用三個字節,注: Unicode在範圍 D800-DFFF 中不存在任何字符;
  4. 010000 – 10FFFF之間的用4個字節。

UTF-16 則是定長的字符編碼,大部分字符使用兩個字節編碼,字符代碼超出 65535 的使用四個字節,以下:編程

  1. 000000 – 00FFFF 兩個字節;
  2. 010000 – 10FFFF 四個字節。

對上述說起的第四種字符而言,UTF-8使用四至六個字節來編碼彷佛太耗費資源了。但UTF-8對全部經常使用的字符均可以用三個字節表示,並且它的另外一種選擇,UTF-16編碼,對前述的第四種字符一樣須要四個字節來編碼,因此要決定UTF-8或UTF-16哪一種編碼比較有效率,還要視所使用的字符的分佈範圍而定。不過,若是使用一些傳統的壓縮系統,好比DEFLATE,則這些不一樣編碼系統間的的差別就變得微不足道了。若顧及傳統壓縮算法在壓縮較短文字上的效果不大,能夠考慮使用Unicode標準壓縮格式(SCSU)。網絡

互聯網工程工做小組(IETF)要求全部互聯網協議都必須支持UTF-8編碼[2]互聯網郵件聯盟(IMC)建議全部郵箱軟件都支持UTF-8編碼。[3]編程語言

相關文章
相關標籤/搜索