utf8的編碼原理

l_serein發表於2012-11-29
utf8的編碼原理大概意思: 
在UTF8中,字元使用1到6個八位序列編碼。 
只有一個八位序列的字元,一個高位置為0,剩下的7位用於字元值的編碼(能表示ASCII) 
一N個八位的序列(N>1),開頭的八位中高位有n位置為1,相鄰的一位置為0,這個八位中 
剩下的位用於字元值的編碼,接著的N-1個八位序列中都在最高位置為1,相鄰位置為0,每一個八位序列剩下的6 
位包含字元值的編碼位。 

只有一個八位序列,則有7位編碼位,表示值為127以內的字元 
兩個八位序列,第一個八位剩下5位,第二個序列剩下6位,共11位可以表示128到2048-1以內的字元 
三個八位序列,第一個八位剩下4位,第二個序列剩下6位,第三個序列剩下6位,共16位,可以表示2048到65536-1以內的字元。 
以此類推。 

最大6個八位序列,用於字元的編碼值有1+5*6=31位,才可以表示2147483648-1以內的字元。 
=================================================================================== 
摘取:RFC2044 - UTF-8 
In UTF-8, characters are encoded using sequences of 1 to 6 octets. 
   The only octet of a "sequence" of one has the higher-order bit set to 
   0, the remaining 7 bits being used to encode the character value. In 
   a sequence of n octets, n>1, the initial octet has the n higher-order 
   bits set to 1, followed by a bit set to 0. The remaining bit(s) of 
   that octet contain bits from the value of the character to be 
   encoded. The following octet(s) all have the higher-order bit set to 
   1 and the following bit set to 0, leaving 6 bits in each to contain 
   bits from the character to be encoded. 

   The table below summarizes the format of these different octet types. 
   The letter x indicates bits available for encoding bits of the UCS-4 
   character value. 

   UCS-4 range (hex.)           UTF-8 octet sequence (binary) 
   0000 0000-0000 007F   0xxxxxxx 
   0000 0080-0000 07FF   110xxxxx 10xxxxxx 
   0000 0800-0000 FFFF   1110xxxx 10xxxxxx 10xxxxxx 

   0001 0000-001F FFFF   11110xxx 10xxxxxx 10xxxxxx 10xxxxxx 
   0020 0000-03FF FFFF   111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 
   0400 0000-7FFF FFFF   1111110x 10xxxxxx ... 10xxxxxx

相關文章