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 변환 (Character Encoding)

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

Loading script...

Related Posts

codechachaCopyright ©2019 codechacha