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

新手上路,请多包涵

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

原文由 mcherm 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 677
2 个回答

String 转换为 byte[]

 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,这是两种常用的编码。

原文由 mcherm 发布,翻译遵循 CC BY-SA 4.0 许可协议

这是避免为每次转换执行 Charset 查找的解决方案:

 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);
}

原文由 M. Leonhard 发布,翻译遵循 CC BY-SA 2.5 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题