private int utf8Position ( int charPosition ) { int pos = offset ; for ( int i = 0 ; i < charPosition ; i ++ ) { int byteValue = data [ pos ] & 0xff ; if ( byteValue < 0x80 ) { pos += 1 ; } else if ( byteValue < 0xC2 ) { throw new UncheckedIOException ( "invalid UTF8" , new CharacterCodingException ( ) ) ; } else if ( byteValue < 0xE0 ) { pos += 2 ; } else if ( byteValue < 0xF0 ) { pos += 3 ; } else if ( byteValue < 0xF8 ) { pos += 4 ; } else { throw new UncheckedIOException ( "invalid UTF8" , new CharacterCodingException ( ) ) ; } } return pos ; }
Convert character position into byte position in UTF8 byte array .