如何在 Java 中将字符串与 UTF8 字节数组相互转换

2022-08-31 05:18:13

在Java中,我有一个字符串,我想将其编码为字节数组(UTF8或其他一些编码)。或者,我有一个字节数组(在某些已知的编码中),我想将其转换为Java字符串。如何进行这些转换?


答案 1

从转换为 :Stringbyte[]

String s = "some text here";
byte[] b = s.getBytes(StandardCharsets.UTF_8);

从转换为 :byte[]String

byte[] b = {(byte) 99, (byte)97, (byte)116};
String s = new String(b, StandardCharsets.US_ASCII);

当然,您应该使用正确的编码名称。我的例子使用了US-ASCII和UTF-8,这两种常用的编码。


答案 2

以下解决方案可避免对每次转换执行字符集查找:

import java.nio.charset.Charset;

private final Charset UTF8_CHARSET = Charset.forName("UTF-8");

String decodeUTF8(byte[] bytes) {
    return new String(bytes, UTF8_CHARSET);
}

byte[] encodeUTF8(String string) {
    return string.getBytes(UTF8_CHARSET);
}