Ваш байтовый массив не является допустимой строкой в кодировке UTF-8 ... поэтому строка, которую вы получаете из
new String(bytes, "UTF-8")
содержит U + 0001 (для первого байта) и U + FFFD для обозначения неверных данных во втором байте. Когда эта строка закодирована с использованием UTF-8, вы получите показанный шаблон байтов.
По сути, вы не должны пытаться интерпретировать произвольные двоичные данные, как если бы они были закодированы в определенной кодировке. Если вы хотите представить произвольные двоичные данные в виде строки, используйте что-то вроде base64.