介绍
在许多情况下,我们可能需要将字符串转换为字节数组,或者将字节数组转换为字符串。这可以通过使用字符集来实现。在本实验中,我们将学习如何使用几种不同的方法来完成这两种类型的转换。
在许多情况下,我们可能需要将字符串转换为字节数组,或者将字节数组转换为字符串。这可以通过使用字符集来实现。在本实验中,我们将学习如何使用几种不同的方法来完成这两种类型的转换。
String 类的 getBytes()
方法提供了一种便捷的方式来获取字节数组。String 类为 getBytes()
方法提供了三个重载版本。
String s = "demo!";
byte[] byteArr = s.getBytes();
import java.io.UnsupportedEncodingException;
String s = "demo!";
String namedCharset = "UTF-16";
byte[] byteArr = s.getBytes(namedCharset);
import java.nio.charset.Charset;
import java.util.Arrays;
String s = "demo!";
Charset charset = Charset.forName("UTF-16");
byte[] byteArr = s.getBytes(charset);
import java.nio.charset.StandardCharsets;
String s = "demo????????????";
Charset charset = StandardCharsets.ISO_8859_1;
byte[] byteArr = charset.encode(s).array();
import java.nio.CharBuffer;
import java.nio.charset.CharacterCodingException;
import java.nio.charset.CharsetEncoder;
import java.nio.charset.CodingErrorAction;
import java.nio.charset.StandardCharsets;
String s = "demo????????????";
CharsetEncoder charsetEncoder = StandardCharsets.ISO_8859_1.newEncoder();
charsetEncoder.onMalformedInput(CodingErrorAction.IGNORE);
charsetEncoder.onUnmappableCharacter(CodingErrorAction.REPLACE)
.replaceWith(new byte[] {-121});
byte[] byteArr = charsetEncoder.encode(CharBuffer.wrap(s)).array();
byte[] byteArr = {-2, -1, 0, 100, 0, 101, 0, 109, 0, 111, 0, 33};
String stringFromBytes = new String(byteArr, "UTF-16");
Charset charset = Charset.forName("UTF-16");
byte[] byteArr = {-2, -1, 0, 100, 0, 101, 0, 109, 0, 111, 0, 33};
String stringFromBytes = new String(byteArr, charset);
import java.nio.ByteBuffer;
Charset charset = StandardCharsets.UTF_16;
byte[] byteArr = {-2, -1, 0, 100, 0, 101, 0, 109, 0, 111, 0, 33, -10};
String stringFromBytes = charset.decode(ByteBuffer.wrap(byteArr)).toString();
import java.nio.charset.CharacterCodingException;
import java.nio.charset.CharsetDecoder;
import java.nio.charset.CodingErrorAction;
import java.nio.charset.StandardCharsets;
CharsetDecoder charsetDecoder = StandardCharsets.UTF_16.newDecoder();
charsetDecoder.onUnmappableCharacter(CodingErrorAction.REPLACE)
.onMalformedInput(CodingErrorAction.REPLACE)
.replaceWith("*");
byte[] byteArr = {-2, -1, 0, 100, 0, 101, 0, 109, 0, 111, 0, 33, -10};
String stringFromBytes = charsetDecoder.decode(ByteBuffer.wrap(byteArr)).toString();
将你想要运行的代码复制到一个文件中,例如 ~/project/Conversion.java
,然后在终端中运行以下命令:
javac Conversion.java && java Conversion
总之,有多种方法可以将字符串转换为字节数组,或将字节数组转换为字符串。最方便的方法是使用 String 类的 getBytes() 方法生成字节数组,然后使用 String 类的构造函数从字节数组生成字符串。或者,我们可以使用 Charsets、CharsetEncoders 和 CharsetDecoders 来执行这些转换。