컴퓨터 활용/노년에 즐기는 코딩

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를 사용하는 것이 표준입니다.

반응형