Я сделал простой тест, и кажется, что Java-преобразование String в байты [] не один-один, по крайней мере, с использованием UTF-8.Код:
byte[] bytes1 = {-1, 127, 0, 38, 97, 104, 55, 110, 50, -24, -48, 59, -20, -6, 64, 1, 4, 107, 56, 54 };
String msg = new String( bytes1, "UTF-8" );
byte[] bytes2 = msg.getBytes( "UTF-8" );
for( byte curr : bytes1 ) {
System.out.print( curr );
System.out.print( ", " );
}
System.out.println();
for( byte curr : bytes2 ) {
System.out.print( curr );
System.out.print( ", " );
}
Я предполагал, что увижу две равные строки вывода.На самом деле это было:
-1, 127, 0, 38, 97, 104, 55, 110, 50, -24, -48, 59, -20, -6, 64, 1, 4, 107, 56, 54,
-17, -65, -67, 127, 0, 38, 97, 104, 55, 110, 50, -17, -65, -67, -17, -65, -67, 59, -17, -65, -67, -17, -65, -67, 64, 1, 4, 107, 56, 54,
Интересно, почему это происходит и как я могу добиться конвертации один-один.Кто-нибудь знает?