character_set = latin1 일때 한글깨짐 해결

DATABASE/MySQL 2019. 10. 1. 19:04

MySQL을 처음 설치할때 기본 문자셋을 변경하지 않으면 latin1 이 기본값으로 지정됩니다.

따라서 MySQL(MariaDB 포함) 에서 database 생성 및 table 생성시 별도의 character set 을 지정하지 않으면 latin1 이 기본값으로 적용됩니다.

 

이 경우 php 개발할때 소스상으로는 한글 깨짐없이 제대로 나오는데 client 프로그램을 이용하면 한글이 깨져서 제대로 조회가 되지 않는 경우가 많습니다.

 

무료로 사용할 수 있는 프로그램 중에 한글이 제대로 표시되는 프로그램으로 dbForge Studio Express for MySQL 이 괜찮은 것 같아서 설정하는 방법을 간단하게 설명하고자 합니다.

 

dbForge Studio Express for MySQL 다운로드는 https://www.devart.com/dbforge/mysql/studio/download.html 에서 받으면 됩니다. 유료버전에 비해서 기능 제한이 일부 있긴 한데 간단한 쿼리 조회를 해서 개발용으로 사용하기에는 괜찮은 프로그램입니다.

 

다운로드 받아서 설치한 후 Database 연결 정보를 보면 Advanced 탭이 있는데 Encoding 에서 default -> Current Windows Code Page 로 선택하셔야 한글이 깨지지 않고 조회가 됩니다.

이렇게 설정해서 사용하는데 한글이 깨지는 경우는 MySQL 서버의 문자셋을 확인해보고 문제되는 부분을 수정해야 합니다.

 

먼저 MySQL 서버에 연결해서 문자셋 설정정보를 확인합니다.

 

SHOW VARIABLES like 'char%';

 

 

제 경우 MySQL 서버의 기본 문자셋을 utf8 로 지정해놨는데 한글이 깨지는 database 의 경우는 문자셋이 latin1 로 되어 있으며 table 역시 latin1 로 되어 있습니다.

 

아래 쿼리로 문자셋 정보를 latin1 로 모두 변경합니다.

 

set character_set_client=latin1;
set character_set_connection=latin1;
set character_set_results=latin1;
set character_set_server=latin1;

 

이제 데이터를 조회해보면 한글이 재대로 조회가 됩니다.

 

참고로 위 쿼리는 MySQL 연결시 임시로 설정하는 값이므로 MySQL 에 다시 연결하면 원래 정보로 돌아갑니다.

따라서 MySQL 서버에 다른 문자셋으로 Database 나 table 이 혼재할 경우 이 방법을 사용하여 한글을 조회하면 됩니다.

 

: