本文概述
- 通过使用字符串类构造函数
- 通过使用UTF-8编码
有两种方法可以将字节数组转换为字符串:
- 通过使用String类构造函数
- 通过使用UTF-8编码
String str=new String(bytes);
例
下面的示例不使用任何字符编码。
public class ByteArraytoStringExample{public static void main(String args[]) {try{byte[] bytes = "hello world".getBytes();
//creates a string from the byte array without specifying character encodingString s = new String(bytes);
System.out.println(s);
}catch(Exception e){e.printStackTrace();
}}}
输出:
文章图片
通过使用UTF-8编码 在将字节数组转换为String时, 请记住字符编码。由于字节是二进制数据, 而字符串是字符数据。重要的是要知道从中创建字节数组的文本的原始编码。当我们使用不同的字符编码时, 我们不会取回原始字符串。
假设我们必须从以“ ISO_8859_1”编码的文件中读取字节数组。将字节数组转换为字符串时, 我们没有任何字符编码。我们使用String类构造函数将字节数组转换为String, 但不能保证我们将获得相同的文本。这是因为String类的构造函数使用平台的默认编码。
字节保存8位, 最多可以包含256个不同的值。它适用于仅使用七个位的ASCII字符集。如果字符集具有超过256个值, 则应明确指定编码, 该编码告诉你如何将字符编码为字节序列。
Java平台支持以下字符集:
- StandardCharsets.ISO_8859_1
- 标准字符集
- 标准字符集.UTF_16
- 标准字符集.UTF_16BE
- 标准字符集.UTF_16LE
new String(byte[], "character encoding");
例
在下面的示例中, 我们使用StandardCharset.UTF_8指定编码。
import java.io.IOException;
import java.nio.charset.StandardCharsets;
public class ByteArraytoStringExample1{public static void main(String[] args) { try{ byte[] b = "Morning".getBytes(StandardCharsets.UTF_8);
//byte array String string = new String(b, StandardCharsets.UTF_8);
//string with "UTF-8" encodingSystem.out.println(string);
}catch(Exception e){e.printStackTrace();
}}}
输出:
文章图片
例
在下面的示例中, 我们在创建字节数组时采用了char。由于自动装箱, 它可以工作。 char’ T’ 在字节数组中被转换为84, 依此类推。这就是两个字节数组的输出相同的原因。
public class ByteArraytoStringExample2{public static void main(String[] args) {byte[] byteArray = { 'T', 'E', 'C', 'H', 'N', 'O', 'L', 'O', 'G', 'Y'};
//byte array of charactersbyte[] byteArray1 = { 84, 69, 67, 72, 78, 79, 76, 79, 71, 89};
//array of ASCII values String s = new String(byteArray);
//converts byteArray to StringString str = new String(byteArray1);
System.out.println(s);
System.out.println(str);
}}
输出:
文章图片
String类还有一个构造函数, 我们可以在其中传递字节数组和Charset作为参数。因此, 以下语句也可以用于在Java中将字节数组转换为String。
String str = new String(byteArray, StandardCharsets.UTF_8)
String类还具有一个构造函数, 可将字节数组的子集转换为String。
String(byte[] bytes, int offset, int length, String charsetName)
让我们看另一个使用不同编码的例子。
例
import java.io.UnsupportedEncodingException;
public class ByteArraytoStringExample3{public static void main(String args[]){try{byte[] bytes = new byte[] { 75, 69, 82, 115, 121, 90, 43, 98, -30};
//bytes in ASCII codeString utf = new String(bytes, "UTF-8");
//converts into UTF-8 encodingString cp1252 = new String(bytes, "Cp1252");
//conversts into Cp1252 endcoding//converts into windows-1252 encodingString windows1252 = new String(bytes, "Windows-1252");
System.out.println("String in UTF-8 encoding : " + utf);
System.out.println("String in Cp1252 encoding : " + cp1252);
System.out.println("string Windows-1252 encoding : " + windows1252);
}catch(Exception e){e.printStackTrace();
}}}
【如何在Java中将字节数组转换为String】输出:
文章图片
推荐阅读
- 如何用Java创建文件
- 如何编译和运行Java程序
- “双 亲 委 派 机 制”
- 我司Spring Boot 项目打包 + Shell 脚本部署详细总结,太有用了!
- 作为Java开发,知道HashMap底层存储原理总不会害你!
- 图文详解压力测试工具JMeter的安装与使用
- 从里到外,手把手一起把JVM虚拟机整体结构与对象内存分配解析摸透透的,简单易懂!
- JVM系列 从一到掌握JVM系列之垃圾回收算法
- 我在工地抬杠,抬到了我梦寐以求的996!TvT~