Unicode to UTF-8字碼轉換

今天同學問到 Unicode 與 UTF-8的轉換,順便對 Unicode 與 UTF-8做一個基本的瞭解。以往的印象 Unicode就是為了統一全球語言文件的編碼,但實際使用上,比如我設定Linux或軟體時,又都會選UTF-8,然而兩者有什麼差別呢?

維基百科上的說明是

Unicode統一碼萬國碼單一碼是一種在電腦上使用的字元編碼。它為每種語言中的每個字元設定了統一併且唯一的二進位編碼,以滿足跨語言、跨平臺進行文本轉換、處理的要求。1990年開始研發,1994年正式公佈。隨著電腦工作能力的增強,Unicode也在面世以來的十多年裡得到普及。

最新版本的 Unicode 是 2006年7月14日推出的Unicode 5.0.0。

Unicode(統一碼)以2byte表達,共有65536種組合,然而Unicode 只是一個字形和內碼上的標準,並沒有定義實際在電腦上存取的方法,因此Unicode協會便定義了一整套的電腦存取Unicode編碼的轉換格式,並考慮了與其它編碼方式兼容,稱之為UTF(Unicode/UCS Transformation Format,統一碼/通用字集變換格式)。常用的格式有UTF-8和UTF-16。

UTF-8(8 位元 Universal Character Set/Unicode Transformation Format)是Unicode 的其中一種可變長度字元編碼。它可以用來表示 Unicode 標準中的任何通用字元。其編碼方式相容ASCII ,令原來處理 ASCII 字元的軟體無需或只作少量改動後,便可繼續使用。因此,它逐漸成為電子郵件網頁及其他儲存或傳送文字的應用中,優先採用的編碼。


Unicode->UTF-8

        U+0000~U+007F (1 byte,128個)    0+7bits                       

U+0080~U+07FF (2 byte,1920個) 110+5bits, 10+6bits

U+0800~U+FFFF (3 bytes,63488個) 1110+4bits, 10+6bits,10+6bits

例如:

"我"字的Unicode編碼為U+6621   01001111 01100000

按照UTF-8的編碼規則分解成 xxxx0100 xx111101 xx100000

所以"我"字的UTF-8編碼: E68891 11100100 10111101 10100000


參考資料:
http://zh.wikipedia.org/w/index.php?title=Unicode&variant=zh-tw

http://zh.wikipedia.org/w/index.php?title=UTF-8&variant=zh-tw

0 comments:

Blogger Templates by Blog Forum