php + mysql 에서 한글 인코딩 관련 질문입니다.

cococo의 이미지

아무 생각 없이 쓰다가, 생각해보니 이상해서 질문 올립니다.

현재, 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/ 에서는 한글이 깨지느냐... 하는 겁니다.

혹시 비슷한 내용을 겪으셨던 분이나 의견이 있으신 분은, 답변 주시면 감사하겠습니다. 이상입니다.

OoOoOo의 이미지

쿼리 입력하기 전에
SET NAMES utf8
먼저 입력해 보세요.