Java - byte[]の配列をStringに変換

JavaでStringを byte[]に変換して転送したり、ファイルに保存することができます。そして、データを読む側は byte[]を再Stringに変換して使用します。

この記事では、 byte[]Stringに変換する方法について説明します。

1. byte[] -> String 変換

次の例では、文字列を byte[]に変換し、再びStringに変換します。

  • String.getBytes()は、文字列をbyte配列に変換します
  • Stringオブジェクトを生成する際に、引数としてbyte配列を渡すと、文字列に変換されます
public class ConvertByteArrayToString {

    public static void main(String[] args) {

        String str = "Hello, World!";
        byte[] bytes = str.getBytes();
        System.out.println("Original String: " + str);

        String coverted = new String(bytes);
        System.out.println("Converted String: " + coverted);
    }
}

Output:

Original String: Hello, World!
Converted String: Hello, World!

2. byte[] -> String 변환 (文字エンコーディング)

Encoding方式は、ASCII、UTF8、UTF16などがありますが、他の環境ではUTF8ではなく、符号化方式で作られた byte[]をUTF8に変換する場合は、変換にならないことがあります。

文字列を変換するとき、 getBytes()String()の引数に同じCharacterSetを渡すと、同じ符号化方式でデータを変換することができます。

以下は、UTF-8形式でエンコード方式を明示して byte[]を保存したり、変換する例です。

import java.nio.charset.StandardCharsets;

public class ConvertByteArrayToString {

    public static void main(String[] args) {

        String str = "Hello, World!";
        byte[] bytes = str.getBytes(StandardCharsets.UTF_8);
        System.out.println("Original String: " + str);

        String coverted = new String(bytes, StandardCharsets.UTF_8);
        System.out.println("Converted String: " + coverted);
    }
}

Output:

Original String: Hello, World!
Converted String: Hello, World!

3. Default Encodingの確認方法

システムに設定された基本的なEncoding方式を確認するときは、3つの方法があります。

  1. Charset.defaultCharset()
  2. file.encodingプロパティ
  3. InputStreamReader.getEncoding()

次の3つの方法でデフォルトのエンコーディング方式を出力する例です。

import java.io.*;
import java.nio.charset.Charset;

public class ConvertByteArrayToString {

    public static void main(String[] args) throws FileNotFoundException {

        System.out.println("Charset.defaultCharset(): " + Charset.defaultCharset());

        System.out.println("file.encoding: " + System.getProperty("file.encoding"));

        System.out.println("InputStreamReader.getEncoding(): "
                + new InputStreamReader(new FileInputStream("/var/tmp/sample.txt")).getEncoding());
    }
}

Output:

Charset.defaultCharset(): UTF-8
file.encoding: UTF-8
InputStreamReader.getEncoding(): UTF8

References

Related Posts

codechachaCopyright ©2019 codechacha