1. DB connect 확인
# DB Connent
$DB = new db4mysql();
$DB -> getConnection();
mysql_query ( 'set names utf8' ); // 추가
인코딩 깨질 때는 EUC-KR 일 수 있으니 확인하기
2. 파싱하는 경우, Content-Type 추가해주기(UTF-8)
$strParse .= "Content-Type: text/html;charset=UTF-8\r\n";
3. iconv 함수 사용
# DE(독일어)
$strBody = iconv("ISO-8859-1","utf-8", $strBody);
+
#그래도 깨질 경우, 각각 iconv함수를 사용한다.
$strWrite = iconv("ISO-8859-1","utf-8", $strWrite);
$strTitle = iconv("ISO-8859-1","utf-8", $strTitle);
$strContents = iconv("ISO-8859-1","utf-8", $strContents);
유니코드 변환
$arrHtmlList = iconv("CP949", "UTF-8", $arrHtmlList);
4. 파일 새로 생성(기존 파일 인코딩이 utf8이 아닌 경우)
크롤링한 한글텍스트가 아닌, 수집기 내부 출력문(echo) 한글이 깨질 경우
파일 인코딩이 utf-8이 아니라 깨지는 경우가 있으므로,
이럴 경우에는 파일을 새로 생성한 뒤 기존 코드를 복붙하여 실행해보면
한글이 깨지지않고 정상적으로 출력된다.
5. iconv 함수 사용시 글자 잘리는 현상
파싱 시, 한글이 깨져 iconv로 EUC-KR 에서 UTF-8 로 변환해주는 코드를 삽입했는데,
$strHtmlList = iconv("euckr", "utf8", $strHtmlList);
이상하게 다음 코드에서 계속 오류가 나서 다시 출력을 확인해보니 텍스트가 잘리는 경우가 있었다.
euckr을 cp949로 변경하면 잘리지않고 잘 출력된다!
$strHtmlList = iconv("CP949", "utf8", $strHtmlList);
'Development > PHP' 카테고리의 다른 글
[정규표현식] 정규식 문자열 제거(영문/숫자) (0) | 2021.12.28 |
---|---|
정규식 html 태그제거 (0) | 2021.12.28 |
정규식 공백제거(str_replace, preg_replace) (0) | 2021.12.28 |
[Crawler] post 방식의 json 파싱 (0) | 2021.12.23 |
PHP 인젝션 (0) | 2021.12.20 |