컴퓨터 활용/노년에 즐기는 코딩
utf8mb4는 MySQL에서 사용하는 문자 인코딩(Character Set)
easyfly
2025. 10. 19. 07:24
반응형
utf8mb4는 MySQL에서 사용하는 문자 인코딩(Character Set) 중 하나로, 모든 유니코드 문자(한글, 이모지, 일본어, 특수문자 등)를 완벽하게 표현할 수 있는 4바이트 인코딩 방식입니다.

🔍 1️⃣ 용어 간단 정리
| 용어 | 의미 |
| utf8 | MySQL에서 예전부터 쓰던 UTF-8의 축소판. 3바이트까지만 지원해서 일부 문자는 표현 불가 |
| utf8mb4 | 진짜 UTF-8 (4바이트까지 완전 지원). 이모지·고어 문자·확장 한자도 표현 가능 |
| mb4 | “multi-byte 4”의 약자, 즉 4바이트 문자까지 지원한다는 뜻 |
🔠 2️⃣ 왜 utf8mb4를 써야 하나?
MySQL의 utf8은 이름은 UTF-8 같지만 3바이트 제한이 있어서,
- 4바이트 문자(예: 😄, 🏡, 𐍈, 확장 한자 등)는 깨집니다.
- 일부 한글 조합형(특히 확장 한글)이나 외국 문자 입력 시 오류 발생 가능.
따라서 MySQL 5.5 이후부터는 utf8mb4를 표준 UTF-8로 권장합니다.
💡 3️⃣ SET NAMES utf8mb4; 의 의미
이 명령은 현재 클라이언트 세션에서 문자 인코딩을 서버와 맞추겠다는 뜻입니다.
즉,
SET NAMES utf8mb4;
는 내부적으로 다음 세 가지를 동시에 설정합니다:
SET character_set_client = utf8mb4;
SET character_set_connection = utf8mb4;
SET character_set_results = utf8mb4;
✅ 결과적으로,
- 클라이언트 → 서버로 보내는 SQL문 인코딩
- 서버가 처리하는 내부 인코딩
- 서버 → 클라이언트로 보내는 결과 인코딩
모두 utf8mb4로 맞춰집니다.
⚙️ 4️⃣ 데이터베이스/테이블도 utf8mb4로 맞추는 게 중요합니다
세션에서만 SET NAMES utf8mb4; 하면 일시적이므로,
DB와 테이블의 문자셋도 영구적으로 utf8mb4로 지정해야 합니다.
ALTER DATABASE univDB CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE `과목` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE `수강` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE `학생` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
✅ 5️⃣ 정리
| 구분 | utf8 | utf8mb4 |
| 지원 바이트 수 | 최대 3바이트 | 최대 4바이트 |
| 한글 지원 | 일부 제한 | 완전 지원 |
| 이모지 지원 | ❌ | ✅ |
| 권장 여부 | 사용 지양 | ✅ 공식 권장 |
📌 결론
utf8mb4는 MySQL에서 진짜 UTF-8 인코딩을 의미하며,
한글·이모지·모든 유니코드 문자를 안전하게 저장하려면
SET NAMES utf8mb4; 와 CHARACTER SET utf8mb4를 사용하는 것이 표준입니다.
반응형