一尘不染

如何在不更改的情况下将String转换为字节?

java

我需要一个解决方案将String转换为字节数组,而无需像这样更改:

输入:

 String s="Test";

输出:

String s="Test";
byte[] b="Test";

当我使用

s.getBytes();

那么回复是

"[B@428b76b8"

但我希望回复是

"Test"

阅读 244

收藏
2020-12-03

共1个答案

一尘不染

您应始终确保序列化和反序列化使用相同的字符集,这会将字符映射到字节序列,反之亦然。默认情况下,String.getBytes()和新的String(bytes)使用默认字符集,该字符集可能是特定于语言环境的。

使用getBytes(Charset)重载

byte[] bytes = s.getBytes(Charset.forName("UTF-8"));

使用新的String(bytes,Charset)构造函数

String andBackAgain = new String(bytes, Charset.forName("UTF-8"));

此外,Java 7还添加了java.nio.charset.StandardCharsets类,因此您不再需要使用躲闪的String常量。

byte[] bytes = s.getBytes(StandardCharsets.UTF_8);
String andBackAgain = new String(bytes, StandardCharsets.UTF_8);
2020-12-03