木村です。

        In article [ruby-dev:4313] Re: UTF-8 patch for Ruby-1.2.1
          (<199901210926.SAA18526 / picachu.netlab.co.jp>),
	  matz / netlab.co.jp (Yukihiro Matsumoto) writes:

>Quat_tって64bitですよね.UTF-8でどうやって31bit以上をエンコー
>ドするんでしょう.Perlのソースを読めば良いのか.

ソースを見る限りでは以下のように判定しているようです

先頭バイト    全体の長さ
------------------------
0xxx_xxxx  →      1
110x_xxxx  →      2
1110_xxxx  →      3  (16ビット長ならここまででよい(4+6*2))
1111_0xxx  →      4
1111_10xx  →      5
1111_110x  →      6  (31ビット長ならここまで(1+6*6))
-----------------------
1111_1110  →      7
1111_1111  →      8

#10xx_xxxxは二バイト目以降にのみ現れるビットパターンです。

UNICODE 2.0では、7バイト長および8バイト長は考慮されておらず、0xFE, 
0xFFでも全体を6バイト指定と見るようです(UNICODE本の巻末のプログ
ラムを見ました)。実際のところ、なんでPerlがここまでやってんのか
はわかりません。

-- 
木村浩一
            May the source be with you.
    e-mail kbk / kt.rim.or.jp
           kimura / sqa.canon.co.jp