핵심내용 키워드

데이터전송을위한 문자를 이진데이터로 변환하는 것, UTF-8은 여러나라의 다국어 언어를 표현가능, 유니코드포인트 , UTF-8 에서는 한글은 3바이트 , 영어는 1바이트

개요

UTF-8 인코딩은 문자를 바이너리 데이터로 변환하는 과정입니다. UTF-8은 유니코드 문자 집합을 사용하여 전 세계의 다양한 문자를 표현할 수 있습니다. 각 문자는 1바이트에서 4바이트까지 다양한 길이의 바이트로 인코딩됩니다.

메모

자바코드

public class Utf8Example {
    public static void main(String[] args) {
        String utf8String = "안녕하세요";
        byte[] utf8Bytes = utf8String.getBytes();
        System.out.println("UTF-8 Encoded bytes: ");
        for (byte b : utf8Bytes) {
            System.out.print(b + " ");
        }
        System.out.println();
    }
}

이 예제에서는 한글 문자열 “안녕하세요”를 UTF-8로 인코딩하여 바이트 배열로 변환하고, 이 바이트 배열을 출력합니다. UTF-8에서는 한글과 같은 다국어 문자도 표현할 수 있습니다.

인코딩 과정

예를 들어, “안녕”이라는 문자열을 UTF-8로 인코딩해보겠습니다.

  1. 먼저 각 문자를 유니코드 코드포인트 로 변환합니다.

    • U+D55C
    • U+B155
  2. 이 유니코드 코드 포인트를 UTF-8 바이트 시퀀스로 변환합니다. UTF-8 인코딩 규칙에 따라, 각 유니코드 코드 포인트는 1바이트에서 4바이트로 변환될 수 있습니다. 한글 문자는 보통 3바이트로 인코딩됩니다.

    • U+D55C (안) 1110xxxx 10xxxxxx 10xxxxxx
    • U+B155 (녕) 1110xxxx 10xxxxxx 10xxxxxx

    여기서 ‘x’는 유니코드 코드 포인트의 비트를 나타냅니다.

  3. 실제 비트를 채워넣습니다.

    • U+D55C (안) 11101101 10110101 10111100
    • U+B155 (녕) 11101011 10010101 10010101
  4. 이렇게 얻은 바이트 시퀀스가 최종적인 UTF-8 인코딩 결과입니다.

이제 자바 코드로 이 과정을 구현해보겠습니다:

public class Utf8EncodingExample {
    public static void main(String[] args) {
        String originalString = "안녕";
        byte[] utf8Bytes = originalString.getBytes(java.nio.charset.StandardCharsets.UTF_8);
        System.out.println("UTF-8 인코딩된 바이트: ");
        for (byte b : utf8Bytes) {
            System.out.printf("%02X ", b);
        }
        System.out.println();
    }
}

이 코드는 “안녕”을 UTF-8로 인코딩하고, 각 바이트를 16진수 형태로 출력합니다. UTF-8 인코딩은 문자에 따라 가변 길이의 바이트를 사용하며, 특히 유니코드를 사용하는 다국어 환경에서 널리 사용됩니다.

출처 (문헌)

GPT