개발 Q&A

제목 euc--kr에서 utf-8로 변환시 변환이 안되서 일부 깨지는 한글 처리 방법 있을까요??
카테고리 PHP
글쓴이 기브 작성시각 2019/09/20 14:49:22
댓글 : 8 추천 : 0 스크랩 : 0 조회수 : 14002   RSS

EUC-KR로 된 API 사이트가 있는데 이곳을 호출하여 데이터를 XML 형태로 받아옵니다.

호출해 데이터를 받는 페이지에선 UTF-8로 인코딩이 되어있어 데이터를 받아온 후

mb_convert_encoding 으로 변환을 하여 xml 데이터를 읽어오는데요.

닣, 뚸 같은 단어가 들어갈 경우 XML이 제대로 파싱이 되지 않아 데이터를 읽어 오지 못하는 경우가 발생합니다.

이런문제가 발생하지 않도록 처리할 수 있는 방법이 있는지 궁금합니다.

 

 

 

 다음글 Composer + CodeIgniter 구조가 이게 ... (6)
 이전글 수정 페이지 셀렉트박스에서, 등록시 선택한 값 DB에서... (1)

댓글

변종원(웅파) / 2019/09/20 14:53:59 / 추천 0
https://www.php.net/manual/en/function.mb-detect-encoding.php  이 함수를 이용해서 euc-kr 이 맞는지 확인해보세요.
기브 / 2019/09/20 15:00:05 / 추천 0

답변 감사합니다. 확인해보니 EUC-KR은 맞습니다.

전체가 한글이 깨져 나오는것은 아니며, 일부 단어들이 깨져 나옵니다.

닣 or 뚸 같은 단어들에 한해서 깨져나오는 증상이네요 ㅠ

엽토군 / 2019/09/22 09:46:11 / 추천 0
원 데이터 자체는 멀쩡히 들어오나요? 그리고 체감상 한국어 EUC-KR은 iconv()가 mb보다 더 효과가 좋더군요.
기브 / 2019/09/23 09:50:15 / 추천 0
일부 한글에 대해선 UTF-8로 변환이 안되는듯 합니다. ㅠㅠ
기브 / 2019/09/23 09:50:46 / 추천 0
물론 mb_convert_encoding 으로 처리합니다.
변종원(웅파) / 2019/09/23 16:23:29 / 추천 0
$a = "닣";
echo '1 '.$a.'<br>';
$b = iconv( 'utf-8','euc-kr', $a);
echo '2 '.$b.'<br>';
$c = iconv( 'euc-kr','utf-8', $b);
echo '3 '.$c.'<br>';

 

iconv(): Detected an illegal character in input string 라고 나오네요.

 

mb_convert_encoding 함수는 닣 -> 변환 -> 꿔 로 바뀝니다.

기브 / 2019/09/24 16:58:13 / 추천 0

답변 감사합니다.

그럼 해당 문제는 깨지지않게 변환되는건 안되나보네요.

다른방법을 찾아봐야되겠네요.. 감사합니다.

쌈닭 / 2019/09/25 12:16:29 / 추천 0
euc-kr 대신 cp949(cp-949???)로 변환해 보세요...