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

박은서's avatar
Feb 06, 2026
10-3. 유니코드 (UTF-8)

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