您展示的字节是UTF-8编码的表示形式,这只是Unicode的众多形式之一。Java被设计为处理这样的编码作为字节序列(如数组和流),而不是字符和字符串。更加清晰的方法是实际使用字节,但是您必须处理Java字节是带符号的(-128..+127),而所有多字节UTF-8代码(按设计)都在8位空间的上半部分:
byte[] a = {'L','e','t',(byte)0342,(byte)0200,(byte)0231,'s'};
System.out.println (new String (a,StandardCharsets.UTF_8));
// or arguably uglier
byte[] b = {'L','e','t',0342-256,0200-256,0231-256,'s'};
System.out.println (new String (b,StandardCharsets.UTF_8));
但如果你想要更接近原始的内容,你可以稍微作弊一下,把一个包含UTF-8字节的字符串(无符号字符)当做包含Unicode范围0000-00FF的8位字符来处理,这个范围被定义为与ISO-8859-1相同:
byte[] c = "Let\342\200\231s".getBytes(StandardCharsets.ISO_8859_1);
System.out.println (new String (c,StandardCharsets.UTF_8));