개발/트러블 슈팅

[MySQL] 한글 데이터 ? 물음표 깨짐 해결 방법

선우. 2024. 5. 24. 22:00

개요

 MySQL 테이블 데이터를 SELECT 했더니 한글 데이터가 ? 물음표로 출력되는 문제가 발생했습니다. 한글 깨짐 현상을 어떻게 해결할 수 있는지 알아보겠습니다.

 

문제 원인

 우선 저는 AWS RDS에 MySQL 서버를 설치해 사용 중입니다. RDS와 동일한 VPC에 위치한 EC2의 Springboot 애플리케이션 API로 데이터를 요청했을 때는 한글이 잘 출력되었습니다.

 

 반면 로컬 컴퓨터에서 Docker로 MySQL 컨테이너를 띄워 RDS에 접속한 상황에서는 한글 데이터가 깨졌습니다. 이를 통해 MySQL 컨테이너의 인코딩 설정이 문제가 있을 것이라 판단했습니다.

 

SHOW variables LIKE 'character%';

 

 위 명령어를 작성해 확인 결과 character_set_results와 character_set_server는 urf8mb4 으로 설정되어 있었습니다. 반면 character_set_client와 character_set_connection 설정에 latin1으로 설정되어 있었습니다.

  • character_set_client: 클라이언트가 서버로 보내는 데이터의 문자 집합
  • character_set_connection: 클라이언트와 서버 간 연결에서 사용되는 문자 집합
  • character_set_results: 서버가 클라이언트로 보내는 결과의 문자 집합
  • character_set_server: 서버의 기본 문자 집합

 

해결 방법

SET NAMES utf8mb4;

character_set

위 명령을 실행하고 다시 확인한 결과 character_set이 utf8mb4로 잘 변경되었습니다.

 

한글 깨짐 해결

테이블 데이터 조회 결과 한글 깨짐이 해결됨을 확인할 수 있습니다.

 

Reference