如何在Java中将字节数组转换为String?

mag*_*nes 18 java arrays string

如何将数组转换bytesString无转换?

我试过了:

  String doc=new String( bytes);
Run Code Online (Sandbox Code Playgroud)

但是doc文件与字节不同(字节是二进制信息).例如:

  String doc=new String( bytes);
  byte[] bytes2=doc.getBytes();
Run Code Online (Sandbox Code Playgroud)

bytes并且bytes2是不同的.

PS:UTF-8不起作用,因为它转换了不同值的一些字节.我测试过它不起作用.

PS2:不,我不想要BASE64.

Pet*_*rey 16

您需要指定所需的编码,例如UTF-8

String doc = ....
byte[] bytes = doc.getBytes("UTF-8");
String doc2 = new String(bytes, "UTF-8");
Run Code Online (Sandbox Code Playgroud)

doc并且doc2将是相同的.

要解码,byte[]您需要知道使用了什么编码,以确保它将正确解码.


Jon*_*oni 13

这是将字节数组转换为a String和back 的一种方法:

String doc=new String(bytes, "ISO-8859-1");
byte[] bytes2=doc.getBytes("ISO-8859-1");
Run Code Online (Sandbox Code Playgroud)

A String是一系列字符,因此您必须以某种方式将字节编码为字符.该ISO-8859-1编码映射每个字节一个单一的,独特的个性,所以它的安全使用它的转换.请注意,其他编码(例如)UTF-8在这种意义上并不安全,因为有些字节序列不会映射到这些编码中的有效字符串.

  • 关于`ISO-8859-1`编码的好建议. (2认同)