1. 유니코드(Unicode) & (UTF-8)
0️⃣ 필기

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-8Share article