UTF-8

UTF-8ではUnicodeコードポイント値を次のようにエンコードする.

範囲 ビットパターン 第1バイト 第2バイト 第3バイト 第4バイト
0000-007F 0000 0000 0xxx xxxx 0xxx xxxx
0080-07FF 0000 0yyy yyxx xxxx 110y yyyy 10xx xxxx
0800-FFFF zzzz yyyy yyxx xxxx 1110 zzzz 10yy yyyy 10xx xxxx
サロゲート(Unicodeスカラ値000p pppp rrrr rrrr cccc cccc,ただしppppp=qqqq+1
D800-DBFF 1101 10qq qqrr rrrr 1111 0ppp 10pp rrrr 10rr rrcc 10cc cccc
DC00-DFFF 1101 11rr cccc cccc

UTF-8 バイト数とコードポイント範囲の対応

ある文字をUTF-8でエンコードしたときに何バイトになるかは,次のように導出できる.

-------------------------------------------------------------------------------
バイト数  UTF-8ビットパターン                有効ビット数と最大値    範囲
-------------------------------------------------------------------------------
            7 bits                              7 bits
           <------>                            <------>
1バイト   0xxx xxxx                           0111 1111              0000〜007F
                                                 7    F              ASCII範囲

             5 bits +  6 bits                     11 bits
             <---->    <----->                 <----------->
2バイト   110x xxxx  10xx xxxx                0111 1111 1111         0080〜07FF
                                                 7    F    F

               4 bits + 6 bits  +  6 bits           16 bits
               <-->    <----->      <----->   <----------------->
3バイト   1110 xxxx  10xx xxxx  10xx xxxx     1111 1111 1111 1111    0800〜FFFF
                                                 F    F    F    F    UCS-2範囲
-------------------------------------------------------------------------------

はたいたかし
2004-04-26
トップ > 開発ツール > Unicode