http://www.google.com/search?hl=zh-CN&q=UTF-8+0x7FF&btnG=Google+%E6%90%9C%E7%B4%A2&lr=

java中一个char对应一个int,长度为32bit
而utf-8保存一个char时,长度为1-3个byte,也就是8bit-24bit。
其中code<= 0x7F的,保存为1个byte
(code >= 0x80) && (code <= 0x7FF)的,保存为2个byte
code>0x800的,保存为3个byte

因此lucene中,IndexOutput.writeChars()函数的代码为
    public void writeChars(String s, int start, int length) throws IOException {
        
final int end = start + length;
        
for (int i = start; i < end; i++{
            
final int code = (int) s.charAt(i);
            
if (code >= 0x01 && code <= 0x7F)
                writeByte((
byte) code);
            
else if (((code >= 0x80&& (code <= 0x7FF)) || code == 0{
                writeByte((
byte) (0xC0 | (code >> 6)));
                writeByte((
byte) (0x80 | (code & 0x3F)));
            }
 else {
                writeByte((
byte) (0xE0 | (code >>> 12)));
                writeByte((
byte) (0x80 | ((code >> 6& 0x3F)));
                writeByte((
byte) (0x80 | (code & 0x3F)));
            }

        }

    }