본문 바로가기

웹개발/PHP

cURL에서 EUC-KR, UTF-8 변환 문제 해결

cURL을 이용하여 데이터를 가져오는데, 아무리 해도 인코딩 문제 해결이 쉽지 않더군요.

¼­¿iÆ?º°½A ¼­AE±¸ ¾cAcμ¿ 변환 후 DB에 저장해도 이렇게 보이는..

iconv가지고 삽질하다가 mb_convert_encoding을 써봐도 해결이 쉽게 되지 않더군요.

몇 번의 삽질 끝에 다음과 같이 해결했습니다.

<환경>

PHP 스크립트의 인코딩 : UTF-8

MySQL 인코딩 : UTF-8

cURL 요청 헤더 : EUC-KR

cURL 응답 : EUC-KR

 

보통 위의 환경에서 문제가 가장 많이 발생하는데, 아래의 코드로 해결하시면 됩니다.

<코드>

$res = sendCurlPostRequest($url,$fields,$referer,"euc-kr");
$enc = mb_detect_encoding($res); // 해당 문자열의 인코딩 타입을 알아냅니다.
$res = mb_convert_encoding($res, "UTF-8","EUC-KR");