개발/php

[php] iconv 함수 문자 인코딩 / 한글 깨짐 현상 해결

반응형

서로 다른 곳에 있는 데이터를 가져오는 경우 캐릭터셋이 맞지 않으면 아래처럼 문자가 깨져보이게 된다.

 

깨진문자

 

이 경우에는 아래처럼 iconv 함수를 사용하여 문자 인코딩을 해주면 된다.

 

iconv함수

iconv(기존 Charset, 변환할 Charset, 문자열);

 

나의 경우에는 웹 DB(UTF-8)에 있는 데이터를 엑셀로 출력하는 코드를 만들고 있었는데 한글문자열 부분만 아래처럼 변경해주면된다. 문자열을 UTF-8에서 UHC로 변경해주는 함수이다.

iconv('UTF-8', 'UHC', 문자열);

 

UHC란?

UHC(또다른 이름으로는 CP949)는 확장완성형 (Unified Hangul Codeset)의 줄임말인데, EUC-KR에서 표현하지 못한 글자까지 인코딩의 영역을 확장한 캐릭터셋이라고 한다. EUC-KR의 경우 2,350자 외의 한글 문자는 모두 생략해버리는 문제가 있다고 하니 EUC-KR대신 UHC를 사용하는게 인코딩의 범위를 더욱 넓고 안전할 수 있다. 

 

 

 

iconv_euckr함수

UTF-8을 EUC-KR로 변환하는 경우 아래처럼 쓸 수 있는데

iconv('UTF-8', 'EUC-KR', 문자열);

iconv_euckr 함수를 쓰면 변환전 캐릭터셋이 무엇이었든 곧바로 euc-kr로 변환이 가능하다.

iconv_euckr(문자열);

 

 

 

iconv_uhc는 없네....

 

 

 

 

 

 

반응형