PHP로 개발일을 하다보면 대부분 서버환경에 맞춰서 작업을 하게 됩니다.
서버에 리눅스 와 MySql 설치되어 있고 설치언어가 UTF-8 로 되어 있다면
크게 문제 없이 작업이 가능하지요~ 더욱이 그냥 리뉴얼이 아닌 새로 개발
작업을 한다면 이건 뭐 금상첨화죠~~ ^^;
근런데 항상 예전의 서버에서 새로운 서버로 이전을 하는 과정에서 문제가 불거지는걸 종종 지켜보게 됩니다.
대부분 리눅스 운영체제를 탑재한 서버를 이용했던 업체들에게서 이런 문제를 자주 접하게 되는데
이게 서버의 설치 언어는 UTF-8 이고 MySql 의 데이터는 EUC-KR인 경우(혹은 반대의 경우)
개발자나 서버관리자가 이를 모르고 무리하게 서버이전을 하다가 문제를 일으킨 경우가 많더군요.
이럴경우 MySql 설정인 my.cnf 에서 사용언어를
default-character-set=euckr (혹은 UTF-8)
character-set-server=euckr
변경을 해주거나 MySql 데이터의 백업시 언어를
-default-character-set 옵션을 이용하여 백업을 받고 다시 복원해주면 문제가 해결되는
경우가 대부분 입니다.
그러나 벗뜨~ 세상만사가 이렇게 쉽게 해결되면 얼마나 좋겠습니까? ^^;
서버와 APM 모두 EUC-KR 문자셋 이라면 GD를 이용하여 한글을 표현하는데 있어
에로(?)사항이 꽃을 피우게 됩니다.
PHP의 경우 GD를 이용하여 도표나 이미지를 표시하는 경우가 많은데
특히 EUC-KR 문자셋의 경우는 100% 깨지기 마련입니다.
이럴때 적절한 해결책이 바로 iconv 입니다.
우선 자신이 사용할 서버에 iconv가 설치되었는지 확인이 필요합니다.
우선 파일을 하나 만들어서
<? phpinfo(); ?>
입력하고 저장한 다음 해당 파일을 브라우저로 호출하면
그림과 같이 iconv가 설치되었는지 확인합니다.
만약 설치가 되어 있지 않다면
Yum 을 이용해서 쉽게 설치가 가능한데
iconv 가 설치가 되어 있지 않다면 대부분 gd 및 freetype, libpng 등이 설치되지 않은 경우가
많으므로 콘솔을 열어서
yum -y install zlib, libpng, freetype, gd, libxml, lib, iconv
입력하면 자동으로 관련 라이브러리를 설치합니다.
(단 yum을 이용한 업데이트 및 설치시 방화벽 문제 나 혹은 보안설정에서 yum이 위배되어 있지 않은지 반드시 확인을 하십시요)
이렇게 iconv 가 다 설치되었거나 설치되어 있다면
PHP에서의 사용법은
<?
$string = "뭐래냐?"
$변수 = iconv("EUC-KR","UTF-8", $string);
?>
하시면 됩니다......
의외로 너무 간단한가요?? ^^
PHP 차트로 많이 활용되는 pChart 의 경우 차트 이미지를 그리면 한글이
깨지는 경우가 많은데 이럴때 사용하시면 도움이 되실겁니다.
위의 그림이 pChart 와 iconv 그리고 GD 를 이용하여 만든 통계를 PHP로 그린 이미지인데 DB 문자셋이
EUC-KR 임에도 iconv 를 이용하여 한글을 변환하였기에 전혀 깨지지 않고 이쁘게 보여주게 됩니다.
참고로 pChart 의 주소는 http://pchart.sourceforge.net/ 입니다.
무료로 사용이 가능한 차트 프레임웍중에는 단연 최고라고 생각하는데
이 포스팅을 읽으시는 님들도 한번 사용해 보셨으면 하네요~
'Course > PHP' 카테고리의 다른 글
PHP - $_SERVER 함수 (0) | 2015.08.20 |
---|---|
PHP 날짜/시간 정리 (0) | 2015.07.20 |
동적 rowspan으로 테이블 구성 (1) | 2014.10.06 |
엑셀 다운로드 구현 시 한글 깨짐 문제 (0) | 2014.03.05 |
Fatal error: Allowed memory size of 8388608 bytes exgausted ... (0) | 2014.01.16 |