사용자 삽입 이미지


웹 호스팅 업체에서 제공해주는 MySQL이 EUC-KR인 관계로 별 다른 고민없이 EUC-KR로 개발을 진행하고 있었는데, AJAX를 적용하는 과정에서 한글 깨짐의 문제가
발생했다.
 
현재 상황은 이렇다.
1. HTML 메타 태크에서의 문자셋 : EUC-KR
2. PHP 파일의 문자셋 : ANSI
3. DB의 문자셋 : EUC-KR
4. PHP Response Header의 문자셋 : EUC-KR
AJAX + Charset 관련 구글링해보니 AJAX에서 사용되는 XMLHttpRequest Object는 UTF-8로만 통신한단다.

Client
ó WAS ó DB 문제셋을 맞춰야는데, MySQL의 문자셋을 바꿀 수 없는 상황에서 어떻게 처리해야할지 고민중이다.

방법
1. 모든 Charset UTF-8로 맞추고, UTF-8 환경의 MySQL을 제공해주는 호스팅 업체로 바꾼다.
  è 장기적으로 봤을 가장 좋은 방법이 있겠으나, 문제 해결 아닌 돌아가기 방법이므로 제외.

방법
2. 모든 Charset UTF-8로 맞추고, DB 핸들링 부분에서 각 컬럼값들을 컨버전한다.
  è Insert, Update, Select SQL 실행마다 컨버전을 해야하므로 불필요(?)한 자원이 낭비된다.
 Insert, Update SQL 실행 전에 각 컬럼 값 컨버전  ex) $col = iconv("utf-8", "euc-kr", $col);
Select SQL 실행 컬럼 컨버전  ex) $col = iconv(euc-kr, utf-8, $col);

방법3. EUC-KR을 기본으로하되, XMLHttpRequest로부터 데이터를 받는 부분의 PHP에서만 각 컬럼값들을 컨버전한다.
  è XMLHttpRequest 한글을 전송하는 경우에만 컨버전하면 되므로 방법2에 비해 훨씬 적은 자원으로 해결 가능.
 $_REQUEST['text1'] = iconv("utf-8", "euc-kr", $_REQUEST['text1']);



☞ 본문 출처 : http://www.enjoydev.com/blog/138(새 창으로 열기)
☞ 참고 자료 :

2008/03/24 14:15 2008/03/24 14:15

트랙백 주소 :: http://optant.ismine.net/blog/trackback/138

댓글을 달아 주세요