개요
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이 utf8mb4로 잘 변경되었습니다.
테이블 데이터 조회 결과 한글 깨짐이 해결됨을 확인할 수 있습니다.
Reference
'개발 > 트러블 슈팅' 카테고리의 다른 글
[AWS] S3 이미지 업로드 후 URL 접근 시 Access Denied 해결 (0) | 2024.05.07 |
---|---|
[이슈 해결] Exception in thread "main" java.net.BindException: Address already in use: bind (0) | 2024.02.20 |
[Error] AWS CodeDeploy 이전 배포 파일 사라지는 현상 & 로그 위치 (0) | 2023.09.22 |
[Error] Gradle script 'gradlew' is not executable, invalid source release 원인, 해결방법 (0) | 2023.06.01 |
[Error] CodeDeploy Error code : UnknownError 원인, 해결방법 (0) | 2023.05.31 |