天天看點

utf8和unicode

下表總結了編碼規則,字母x表示可用編碼的位。

      Unicode符号範圍 | UTF-8編碼方式

         (二進制)|(十六進制)

——————–--———————————————

0000 0000-0000 007F | 0xxxxxxx

0000 0080-0000 07FF | 110xxxxx 10xxxxxx

0000 0800-0000 FFFF | 1110xxxx 10xxxxxx 10xxxxxx

0001 0000-0010 FFFF | 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx

下面,還是以漢字“嚴”為例,示範如何實作UTF-8編碼。

已知“嚴”的unicode是4E25(100111000100101),根據上表,可以發現4E25處在第三行的範圍内(0000 0800-0000 FFFF),是以“嚴”的UTF-8編碼需要三個位元組,即格式是“1110xxxx 10xxxxxx 10xxxxxx”。然後,從“嚴”的最後一個二進制位開始,依次從後向前填入格式中的x,多出的位補0。這樣就得到了,“嚴”的UTF-8編碼是“11100100 10111000 10100101”,轉換成十六進制就是E4B8A5。