question: public static byte [ ] stringToUtf8Bytes ( String string ) { int len = string . length ( ) ; byte [ ] bytes = new byte [ len * 3 ] ; int outAt = 0 ; for ( int i = 0 ; i < len ; i ++ ) { char c = string . charAt ( i ) ; if ( ( c != 0 ) && ( c < 0x80 ) ) { bytes [ outAt ] = ( byte ) c ; outAt ++ ; } else if ( c < 0x800 ) { bytes [ outAt ] = ( byte ) ( ( ( c > > 6 ) & 0x1f ) | 0xc0 ) ; bytes [ outAt + 1 ] = ( byte ) ( ( c & 0x3f ) | 0x80 ) ; outAt += 2 ; } else { bytes [ outAt ] = ( byte ) ( ( ( c > > 12 ) & 0x0f ) | 0xe0 ) ; bytes [ outAt + 1 ] = ( byte ) ( ( ( c > > 6 ) & 0x3f ) | 0x80 ) ; bytes [ outAt + 2 ] = ( byte ) ( ( c & 0x3f ) | 0x80 ) ; outAt += 3 ; } } byte [ ] result = new byte [ outAt ] ; System . arraycopy ( bytes , 0 , result , 0 , outAt ) ; return result ; }
target:  Converts a string into its Java-style UTF-8 form. Java-style UTF-8 differs from normal UTF-8 in the handling of character '\0' and surrogate pairs.