이번 학기부터 졸업프로젝트를 시작하게 되었다.
나는 진로를 백엔드로 생각을 하고 있었기 때문에 백엔드를 맡게 되었다.
우리 팀의 주제는 한글과 관련되어있다. 이에 대해서는 앞으로 글로 포스팅 해 나갈 생각이다.
따라서 우리 팀 프로젝트의 DB는 한글 데이터를 저장가능해야한다.
하지만 문제가 생겼다.
다른 프로젝트에서 MariaDB 10.6을 사용해서 웹 사이트의 DB구축을 하였는데 한글 입력이 되지 않는 것이다.
(참고: 이 때는 해결 된 것처럼 보였지만 이후에 다시 insert하려고 하니 오류가 발생하였습니다. 다음편 참고해주세요!)
이런 식으로 말이다.
(이 화면은 실제 그 프로젝트의 DB 넣을 때 표시된 화면은 아니고 이 한글 입력 안되는 문제를 해결하기 위해 테스트 하던 중에 나타난 화면 중 일부를 캡처한 것이다.)
그 프로젝트에서는 웹사이트를 만들 때 한글 또는 영어 둘 중에 하나를 선택할 수 있었고 시간이 여유롭지 않았기 때문에 그냥 영어로 진행했다.
하지만 졸업프로젝트에서는 한글 데이터가 필수적이기 때문에 반드시 이 문제를 해결해야했고 그 프로젝트가 끝나고 시도해보았고 문제가 해결되었다.
문제 상황을 자세히 설명해보자면, 구글링하면서 my.ini 파일도 수정하고 (나의 환경은 Windows10이다.) table 생성할 때 default charset=utf8로 설정해보기도 하고 database 생성할 때도 default character set utf8 collate utf8_general_ci; 해보고 했는데도 문제는 해결되지 않았다.
저 1366 에러가 뜨지 않아서 '데이터가 제대로 들어갔나?' 싶을 때에도 확인해보면
이런 식으로 한글이 깨져서 들어갔었다.
(service_name 컬럼과 menu_name 컬럼에 한글 데이터를 입력했었다.)
구글링을 끝까지 해본 결과
mysql의 character set을 utf8이 아니라 euckr로 해보라는 글이 있었다. (주소는 참고에 기재해놓았다.) 여태까지 구글링 한 모든 결과들은 "utf8로 설정하세요"라고 했었기 때문에 설마하는 마음으로 set character set euckr; 을 입력하였고 insert into 테이블 이름 values (한글 데이터); 입력하였다.
그리고 select * from 테이블 이름; 하였더니
한글 데이터가 제대로 들어간 걸 확인할 수 있었다.
결론
나의 해결방법
1. 구글링 하여서 나오는 utf8 관련 모든 방법을 시도해본다.
(my.ini 파일 수정, default character set utf8 collate utf8_general_ci;, table 생성할 때 default charset=utf8로 설정 등)
(1) utf8로 my.ini 파일 수정 (예시)
(2) cmd로 mysql 접속 후,
create database 데이터베이스 이름 default character set utf8 collate utf8_general_ci;
입력
예시)
(3) create table 테이블 이름 ( 속성1 데이터형 ... ) default charset=utf8;
입력
예시)
2. show variables like 'c%'; 했을 때, 모두 utf8로 잘 나오는데도 한글 데이터가 insert가 되지 않는다면 set character set euckr;을 입력해본다.
예시) show variables like 'c%';
하지만 한글이 입력되지 않는다.
3. 관리자 권한으로 cmd를 실행한다.
4. systeminfo를 입력해본다.
systeminfo를 입력했을 때 영어로 뜬다면 한글 입력이 깨져서 들어가므로 chcp 949를 입력해서 캐릭터 셋을 한글로 바꾼다.
systeminfo를 입력해본다.
5. mysql에 로그인해서 해당 db에 character set을 euckr로 바꾼다.
6. 한글 데이터를 insert 한다.
7. 성공!
모두 오류 원만히 해결되시기를 바랍니다!
참고: https://hhyeok1026.tistory.com/7