前言

介绍一下 byte[] 和 String 相互转换的使用案例。

版本约定

byte[] 数组和 String 之间的相互转换,需要注意编码。

String 转 byte[] 数组

不设置编码,代码如下:

  1. public static void main(String[] args) {
  2. String str = "abcdef";
  3. byte[] byteArray = str.getBytes();
  4. }

没有设置编码,使用默认编码。默认编码是由 System 类的 “file.encoding” 属性决定的,不确定的通过如下代码执行一下,看看当前项目的默认编码是什么。

  1. public static void main(String[] args) {
  2. System.out.println(System.getProperty("file.encoding"));
  3. }

设置编码,代码如下:

  1. public static void main(String[] args) {
  2. String str = "abcdef";
  3. byte[] byteArray = str.getBytes(StandardCharsets.UTF_8);
  4. }

推荐使用 StandardCharsets 常量,不建议直接填 “UTF-8” 字符串,因为一个是容易填错,另外你还得处理 Checked Exception。

byte[] 数组转 String

不设置编码,代码如下:

  1. public static void main(String[] args) {
  2. byte[] byteArray = new byte[10];
  3. String str = new String(byteArray);
  4. }

设置编码,代码如下:

  1. public static void main(String[] args) {
  2. byte[] byteArray = new byte[10];
  3. String str = new String(byteArray, StandardCharsets.UTF_8);
  4. }

在转换的时候,我们建议都设置编码,避免出现意料之外的情况。

总结

byte[] 和 String 互相转换,建议设置编码。

作者:殷建卫 链接:https://www.yuque.com/yinjianwei/vyrvkf/fari45 来源:殷建卫 - 架构笔记 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。