Study ;3

어제 삽질한 CP949와 EUC-KR

알 수 없는 사용자 2012. 2. 16. 17:13

메일을 읽다가 월요일에 놓쳤던 메일이 있다는 걸 발견하고 읽어보니
서포트 페이지에서 대화명 변경 시 묭묭이라고 입력하면 서포트에는 보이나 DB에는
뱪뱪이 (대충적음) 로 들어가는 바람에 게임클라이언트에서 이상하게 나온다는 내용.

아 이거 해결한다고 한 30분 혼자 삽질하다가 도저히 안되겠어서 헬프요청.
별별 방법을 다 써봤으나 모두 수포..
겨우 하나 만들었던 일일히 바꿔주는 함수는 기밀태씨가 보내준 코드 한줄로 단박에 해결!!
나랑 울팀분들이 몇시간 낑낑댄거 한 30분만에 풀어줌..ㅠㅠ  

$nick = iconv("UTF-8", "CP949", html_entity_decode(iconv("CP949", "UTF-8", $_POST[nick]), -1, "UTF-8"));

iconv함수로 들어가있는 cp949형식을 utf-8코드로 바꿔주고 
html_entity_decode로 전체문자열을(condition -1) UTF-8로 바꿔준 후에
다시 iconv로 UTF-8을 CP949로 바꿔주면 DB에 제대로 들어간다.

프로그래머 생활에서 정말 도움이 되는 울 기밀태씽 ㅠㅠ 고마웡~

어찌되었건 여기서 중요한건
EUC-KR의 한글셋은 별로 없다는거. 
다들 EUC-KR을 쓰고있다고 하지만 실제 사용하는건 CP949.


비슷하게 다른부분에서 에러가 발생.
거기는 page submit이 아닌 jQuery의 .get 함수로 넘긴다.
jQuery에서는 데이터를 무조건 UTF-8로 넘기기 때문에 decode만 잘하면 된다.
하지만 넘어온 데이터를 EUC-KR로 decode했던 것이 에러.
CP949로 바꿔주니 잘 나온다.


하아. 하나 배웠다... 
반응형