inblog logo
|
DailyCoding
    Spring Boot

    10-3. 유니코드 (UTF-8)

    박은서's avatar
    박은서
    Feb 06, 2026
    10-3. 유니코드 (UTF-8)
    Contents
    1. 유니코드(Unicode) & (UTF-8)0️⃣ 필기1️⃣ 문자 인코딩의 목적2️⃣ ASCII 코드3️⃣ EUC-KR (한글 인코딩)4️⃣ 유니코드 (Unicode)5️⃣ UTF-8 인코딩6️⃣ 혼합 문자 처리 (필기 내용 보완)7️⃣ MySQL과 UTF-8 (중요 ⚠️)8️⃣ 필기에서 보완/수정하면 좋은 점9️⃣ 꼭 추가해서 기억하면 좋은 핵심 요약

    1. 유니코드(Unicode) & (UTF-8)

    0️⃣ 필기

    notion image

    1️⃣ 문자 인코딩의 목적

    • 문자 인코딩: 문자를 컴퓨터가 이해할 수 있도록 **숫자(이진수)**로 매핑하는 규칙
    • 문제 배경
      • 초기에는 나라별로 다른 문자 집합 사용 → 호환성 문제
      • 이를 해결하기 위해 등장한 것이 유니코드(Unicode)

    2️⃣ ASCII 코드

    1) ASCII란?

    • 영문자, 숫자, 특수문자를 숫자로 표현한 초기 문자 인코딩
    • 7비트 사용 (0~127, 총 128개)

    2) 예시

    문자
    10진수
    2진수(7bit)
    A
    65
    1000001
    B
    66
    1000010
    C
    67
    1000011

    3) 확장 ASCII

    • 실제 저장 시에는 1Byte(8bit) 사용
    • 남는 1비트는:
      • 패리티 비트(parity bit)로 사용되기도 함
      • 또는 확장 문자 표현에 사용
    ✔️ ASCII는 영어만 표현 가능

    3️⃣ EUC-KR (한글 인코딩)

    1) 특징

    • 한글을 표현하기 위한 고정 길이 인코딩
    • 한글 2Byte
    • 완성형 기반 (모든 조합을 다 담지 못함)

    2) 문제점

    • 정의되지 않은 문자가 들어오면 깨짐
    • 확장성 부족
    • 한글 외 문자(이모지, 타 언어)에 취약

    4️⃣ 유니코드 (Unicode)

    1) 유니코드란?

    • 전 세계 모든 문자를 하나의 숫자 체계로 통합한 표준
    • 각 문자에 고유한 코드 포인트(Code Point) 부여
      • 예:
        • A → U+0041
        • 가 → U+AC00
        • 😀 → U+1F600
    ⚠️ 중요
    유니코드 = 문자 번호 체계
    UTF-8 = 저장 방식

    5️⃣ UTF-8 인코딩

    1) UTF-8 특징

    • 유니코드를 실제로 저장하는 가변 길이 인코딩 방식
    • 1~4 Byte 사용
    • ASCII와 완벽 호환

    2) 바이트 길이 규칙

    문자 종류
    바이트 수
    영어, 숫자, 기본 기호
    1 Byte
    대부분의 한글
    3 Byte
    이모지, 일부 특수문자
    4 Byte

    3) 예시

    • A → 1 Byte
    • 가 → 3 Byte
    • 😀 → 4 Byte
    ✔️ UTF-8은 앞부분 비트 패턴으로 몇 바이트인지 자동 판별 가능
    → 중간부터 읽어도 해석 가능

    6️⃣ 혼합 문자 처리 (필기 내용 보완)

    • 문자열 안에
      • 영어 (1B)
      • 한글 (3B)
      • 이모지 (4B)
    • 가 섞여 있어도 UTF-8은 문제 없음
    • 바이트 수가 달라도 규칙이 명확해서 정확히 해석됨

    7️⃣ MySQL과 UTF-8 (중요 ⚠️)

    1) MySQL의 함정

    • utf8
      • ❌ 진짜 UTF-8 아님
      • 최대 3 Byte까지만 지원
      • 이모지 저장 ❌
    • utf8mb4
      • ✅ 진짜 UTF-8
      • 1~4 Byte 전부 지원
      • 이모지, 모든 유니코드 문자 가능
    ➡️ 실무에서는 무조건 utf8mb4 사용

    8️⃣ 필기에서 보완/수정하면 좋은 점

    1) ASCII 설명 보완

    • ASCII는 7비트가 원래 표준
    • 8비트 = 저장 편의/확장 개념

    2) “유니코드 = UTF-8” 아님

    • 정확히는:
      • 유니코드: 문자 번호 체계
      • UTF-8 / UTF-16 / UTF-32: 저장 방식
    • UTF-8이 가장 널리 쓰임

    3) EUC-KR “완성형” 강조 👍

    • 필기 내용 정확함
    • 조합형 한글 미지원 → 깨짐 원인

    9️⃣ 꼭 추가해서 기억하면 좋은 핵심 요약

    ASCII : 영어만, 1Byte EUC-KR : 한글 2Byte, 확장성 부족 Unicode : 전 세계 문자 번호 표준 UTF-8 : 유니코드를 저장하는 가변 인코딩 (1~4Byte) MySQL utf8 : 3Byte까지만 (가짜 UTF-8) utf8mb4 : 진짜 UTF-8
     
    Share article
    Contents
    1. 유니코드(Unicode) & (UTF-8)0️⃣ 필기1️⃣ 문자 인코딩의 목적2️⃣ ASCII 코드3️⃣ EUC-KR (한글 인코딩)4️⃣ 유니코드 (Unicode)5️⃣ UTF-8 인코딩6️⃣ 혼합 문자 처리 (필기 내용 보완)7️⃣ MySQL과 UTF-8 (중요 ⚠️)8️⃣ 필기에서 보완/수정하면 좋은 점9️⃣ 꼭 추가해서 기억하면 좋은 핵심 요약

    DailyCoding

    RSS·Powered by Inblog