Ajax를 공부 하면서 한글 전송을 하면 자꾸 깨져서.. 이래 저래 고생하다가..

나름 찾아낸 방법을 대충 써봅니다.

Window PHP5, MySQL5 환경에서 UTF-8로 개발하기

1. 환경
Window, PHP5, MySQL5

2. 각 환경 설정
- PHP : php.ini 파일에 default_charset="UTF-8"
-> 이렇게 하면 PHP 가 기본으로 UTF-8 로 을 껍니다. 아마
- MySQL5 : my.ini 파일 (my.cnf) 에 기본 character set 변경
-> 이렇게 하면 MySQL 의 DB 저장이 UTF-8 이 될 껍니다..
-> 기존 데이터가 있다면 UTF-8 로 변환 하세요 (참조: http://kwon37xi.egloos.com/1634768)
[client]
character-set=utf8
[mysqldump]
default-character-set=utf8
[mysqld]
init_connect=SET collation_connection = utf8_general_ci
init_connect=SET NAMES utf8
default-character-set=utf8
character-set-server=utf8
collation-server=utf8_general_ci

3. Php 에서 MySQL Connection 연결 한후
$mysqli->set_charset("utf8"); 또는 $mysqli->query("set names utf8");
이용하여 connection character set(?) 변경
-> 이렇게 하면 글자를 가져오고 저장할때 UTF-8 로 합니다.

4. HTML 개발 할때 기본 UTF-8 환경에서 개발
editplus 이든 notepad++ 이든 암튼 기본 인코딩을 UTF-8 에서 합니다.
그리고 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
이걸 넣어서 기본 인코딩을 UTF-8 로 해줘야 겠죠...

5. Ajax 로 한글을 Get 방식으로 넘겨야 할 경우
- FireFox : 알아서 UTF-8 로 넘겨 주더 군요.
- IE6 : 한글을 euc-kr 로 넘깁니다...ㅠ.ㅠ 여기서 좌절
PHP 일 경우 받아서 인코딩 변경하는 함수를 쓰면 되지만
매번 그렇게 한다는것은! 너무나도 귀찮은 일이죠..ㅠ.ㅠ
XmlHttp 객체의 Header 를 아무리 변경해봐도 한글을 euc-kr 로 넘기 더군요.ㅠ.ㅠ

그리서 이때 그냥 제가 쓴 꽁수는.....
XmlHttp 의 post 방식의 Header 를 application/x-www-form-urlencoded;charset=UTF-8
이렇게 변경해놓구 전부  Post  방식으로 보내 버렸습니다.ㅡㅡ;
잘 되는 군요.ㅠ.ㅠ

이렇게 하면 장점은 XmlHttp 부를때 어차피 객체 생성 등을 따로 함수로 하니까
데이터를 주고 받고 저장하고 불러 오고 할때 등 신경쓸 것이 전혀 없다는.. 좋은 점이..

제가 아는 것이 부족한지라 이게 답인 지는 모르겠네요...
그냥 제 나름의 정리 입니다.
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

티스토리 툴바