'제로베이스 데이터스쿨'에서 AWS RDS에 대해 배우고 있습니다. 처음 AWS RDS를 사용하면서 겪었던 한글 인코딩 문제와 그 해결 과정에 대해 정리해보겠습니다.
처음 인코딩 문제를 인식한 것은 특정 SQL 파일을 사용하여 데이터베이스 테이블에 데이터를 입력했을 때였습니다. 이 SQL 파일은 police_station
테이블에 데이터를 입력하는 명령을 포함하고 있었습니다. 테이블 스키마는 이미 생성되어 있었고, 필요한 것은 데이터를 채워 넣는 것뿐이었습니다.
SQL 파일의 내용은 다음과 같았습니다:
insert into police_station
values
('서울특별시경찰청', '서울시 종로구 사직로8길 31'),
('서울중부경찰서', '서울특별시 중구 수표로 27'),
('서울종로경찰서', '서울특별시 종로구 율곡로 56'),
('서울남대문경찰서', '서울특별시 중구 한강대로 410');
police_station
테이블의 데이터를 조회했을 때 한글이 제대로 표시되지 않고 깨져 있는 것을 발견했습니다.
이 문제를 해결하기 위해 먼저 이 블로그를 참고하여 데이터베이스의 캐릭터셋 설정을 수정했습니다. 하지만 이 방법만으로는 문제가 해결되지 않았습니다.
SQL 파일을 통한 데이터 입력 후 발생한 한글 깨짐 문제를 해결하기 위해 다음으로 시도한 것은 터미널의 인코딩 설정을 확인하고 변경하는 것이었습니다. 이를 위해 먼저 터미널에서 chcp
명령어를 사용하여 현재 인코딩 설정을 확인했습니다. 결과는 949
로, 이는 CP949 (한국어 Windows의 기본 코드 페이지)를 의미합니다.
이 문제를 해결하기 위해, 터미널의 인코딩을 UTF-8
로 변경하였습니다.
chcp 65001
인코딩 변경 후, insert_to.sql
파일을 다시 실행했고, 이번에는 한글이 정상적으로 표시되는 것을 확인할 수 있었습니다.
하지만 문제는 여기서 끝나지 않았습니다. 로컬 데이터베이스의 백업 파일을 사용하여 AWS RDS에 테이블을 생성하는 과정에서 또 다른 인코딩 문제에 직면했습니다. 백업 파일을 확인했을 때, 이 파일이 UTF-16
으로 인코딩되어 있는 것을 발견했습니다.
AWS RDS의 캐릭터셋 설정은 utf8
로 되어 있었으며, 터미널의 인코딩 설정 또한 UTF-8
로 설정되어 있었습니다. 그럼에도 불구하고, mysqldump
를 사용하여 데이터베이스를 백업했을 때 생성된 파일의 인코딩 형식이 예상과 다르게 UTF-16
으로 되어 있는 것이었습니다.
오랜 시간의 구글링을 통해 mysqldump
가 실행되는 환경, 즉 터미널의 인코딩 처리 방식이 백업 파일의 인코딩에 영향을 줄 수 있음을 알게 되었습니다.
터미널마다 인코딩 설정이 다를 수 있다는 것을 알게 되었으니 다른 터미널에서 백업을 시도 해봤습니다. 그래서 Visual Studio Code의 터미널에서 백업을 진행했고, 이번에는 UTF-8
로 인코딩된 백업 파일을 얻을 수 있었습니다. 이 파일을 사용하여 마침내 인코딩 문제를 완전히 해결할 수 있었습니다.
인코딩 문제가 발생했을 때 문제의 원인을 파악하는 것은 어렵고 짜증나는 과정이었습니다. 인코딩에 영향을 미치는 요소가 매우 다양하며, 각각의 설정이 어떻게 전체 시스템에 영향을 미치는지 이해하기가 쉽지 않았습니다.
하지만 공부를 해나가면서, 환경 설정이 복잡한 시스템에서 문제가 발생했을 때, 문제의 원인을 체계적으로 조사하고, 가능한 원인을 하나씩 확인해 나가는 접근 방식이 얼마나 중요한지를 느끼게 됩니다.