핵심내용 키워드
데이터전송을위한 문자를 이진데이터로 변환하는 것, 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로 인코딩해보겠습니다.
-
먼저 각 문자를 유니코드 코드포인트 로 변환합니다.
- 안 → U+D55C
- 녕 → U+B155
-
이 유니코드 코드 포인트를 UTF-8 바이트 시퀀스로 변환합니다. UTF-8 인코딩 규칙에 따라, 각 유니코드 코드 포인트는 1바이트에서 4바이트로 변환될 수 있습니다. 한글 문자는 보통 3바이트로 인코딩됩니다.
- U+D55C (안) → 1110xxxx 10xxxxxx 10xxxxxx
- U+B155 (녕) → 1110xxxx 10xxxxxx 10xxxxxx
여기서 ‘x’는 유니코드 코드 포인트의 비트를 나타냅니다.
-
실제 비트를 채워넣습니다.
- U+D55C (안) → 11101101 10110101 10111100
- U+B155 (녕) → 11101011 10010101 10010101
-
이렇게 얻은 바이트 시퀀스가 최종적인 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