Java does not automatically figure out the encoding of a string.
The String(byte[]) constructor
constructs a new String by decoding the specified array of bytes using the platform's default charset.`
In your case the UTF-16 bytes are being interpreted as UTF-8 and you end up with garbage.
Use new String(raw, Charset.forName("UTF-16"))
to rebuild the String.