はじめに
文字列からバイト配列に変換したり、バイト配列から文字列に変換する必要があるケースはたくさんあります。これは文字セットを使って行うことができます。この実験では、いくつかの異なる方法を使って両方の種類の変換を行う方法を学びます。
文字列からバイト配列に変換したり、バイト配列から文字列に変換する必要があるケースはたくさんあります。これは文字セットを使って行うことができます。この実験では、いくつかの異なる方法を使って両方の種類の変換を行う方法を学びます。
String クラスの getBytes() メソッドは、バイト配列を取得する便利な方法を提供します。String クラスには、getBytes() メソッドの 3 つのオーバーロードされたバージョンがあります。
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 を使用して変換を行うこともできます。