php + mysql 에서 한글 인코딩 관련 질문입니다.
아무 생각 없이 쓰다가, 생각해보니 이상해서 질문 올립니다.
현재, windows 에 WINAPM 7 을 설치해서 php 로 사이트를 개발중입니다.
디비에 값이 들어있는지를 확인하기 위해서는 phpMyAdmin 과 mysql console 을 둘 다 이용합니다.
사이트는 utf-8을 기본으로 해 놨습니다. 메타 선언도 utf-8 을 집어넣었고, 파일을 저장할때도 utf-8 로 저장합니다.
그러니, 당연히 input box 를 통해 입력받는 한글도 UTF-8 이라고 생각하고 있습니다.
windows 에서 실행하는 mysql console 은 기본 설정값이 cp949 이니, 글씨가 깨져나와도 크게 걱정하지 않습니다. 콘솔에서 디비 까 봐서 UTF-8 로 되어 있는걸 CP949 로 보면 깨지는 게 당연할 테니까요.
헌데, HTML 기반인 PHPMYADMIN 으로 로컬( LOCALHOST ) 에 접속해 디비를 까봐도 글씨가 깨져 보입니다. 이거... 좀 이상한거 아닌가요?
그러니까, 데이터 입력 UI 역할을 하는 INPUT.PHP 는, meta 정보에 charset=utf-8 을 설정해 놨으니까,
1. 한글 입력은 utf-8 인코딩으로 서버에 넘어오겠죠?
2. 그럼 그 한글 데이터를 post로 가져와서 db 에 넣으면, utf-8로 서버 디비에 들어갈 테구요.
3. 그걸 mysql console 로 보면야, cp949 코딩이니까 깨질텐데
4. 왜 meta 정보에 charset=utf-8 설정이 되어 있는 http://127.0.0.1/phpMyAdmin/ 에서도 한글이 깨지느냐... 하는 겁니다.
웹 화면에는 한글이 안 깨져 나옵니다만, php my admin 화면에는 깨져 나옵니다. 이게 하나 이상한 거구요.
제가 cafe24에 웹서비스 신청 > 한글 입력 > export > 로컬PC에 설치한 mysql 에 import 해 봤습니다.
그러니까, 로컬의 phpmyadmin 에서는 한글이 안 깨져 보이는데 html 에서는 깨져 나옵니다.
이거... 아무리 생각해도 이상합니다. local 의 phpMyAdmin 에는 meta 정보에 charset=utf-8 이 설정되어 있는데,
거기서 제대로 나오는 한글 문자열이
meta 정보에 charset=utf-8 이 설정된 localhost 의 html page 에서는 깨져 나온다는게 이상입니다.
이상입니다.
다시 한 번 정리하면
1. 데이터 입력 UI 역할을 하는 INPUT.PHP 와, 웹 기반 디비 조회 툴인 phpMyAdmin 는, 둘 다 meta 정보에 charset=utf-8 가 설정되어 있는데
2. input.php 을 비롯한 다른 html 에서는 안 깨지는 한글이
3. http://127.0.0.1/phpMyAdmin/ 에서는 한글이 깨지느냐... 하는 겁니다.
혹시 비슷한 내용을 겪으셨던 분이나 의견이 있으신 분은, 답변 주시면 감사하겠습니다. 이상입니다.
쿼리 입력하기 전에 SET NAMES utf8 먼저
쿼리 입력하기 전에
SET NAMES utf8
먼저 입력해 보세요.
댓글 달기