웹 개발을 하다 보면 과거 EUC-KR로 구축된 사이트를 리뉴얼하거나, 기존 데이터를 UTF-8 환경으로 옮겨야 할 때가 있습니다. 이때 데이터가 깨지지 않도록 데이터베이스와 테이블, 컬럼의 문자셋을 정확하게 변경하는 방법을 정리해봤습니다.
데이터베이스 문자셋 확인 방법
SHOW CREATE DATABASE 데이터베이스명;
이 명령어를 입력하면 현재 DB의 문자셋과 정렬 방식(collation)을 확인할 수 있습니다.
데이터베이스 문자셋 변경 방법
ALTER DATABASE 데이터베이스명 CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
utf8이 아닌 utf8mb4를 권장합니다. 이 방식은 이모지와 다양한 유니코드 문자를 더 폭넓게 지원합니다.
테이블 문자셋 변경 방법
ALTER TABLE 테이블명 CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
데이터베이스 변경만으로는 기존 테이블 문자셋이 변하지 않으므로, 각 테이블마다 위 명령어로 변경해줘야 합니다.
컬럼 문자셋 변경 방법
ALTER TABLE 테이블명 CHANGE 컬럼명 컬럼명 VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
특정 컬럼만 별도로 문자셋을 바꿔야 할 때 사용하는 방법입니다.
phpMyAdmin에서 변경하는 법
- phpMyAdmin 접속
- 데이터베이스 선택 → '작업' 탭 클릭
- 문자셋 및 정렬방식 수정 후 저장
- 테이블도 각각 들어가서 '구조' → '운영' 탭에서 문자셋 변경 가능
데이터 백업/복원 시 주의사항
mysqldump 명령어로 백업할 때 --default-character-set=utf8mb4
옵션을 꼭 추가하세요. 그래야 복원 시 깨짐 현상을 방지할 수 있습니다.
마무리
이렇게 하면 과거 EUC-KR 환경의 데이터베이스를 깨짐 없이 UTF-8 환경으로 안전하게 옮길 수 있습니다. 실무에서 자주 사용하는 내용이니 꼭 정리해 두세요.
다음 글 예고 📌
👉 PHP에서 한글 데이터 입출력 시 깨짐 방지 설정법 도 준비 중입니다!