이 기사의 예에서는 PHP에서 iconv를 사용하여 중국어 잘림 문제에 대한 솔루션을 설명합니다. 참고할 수 있도록 모든 사람과 공유하세요. 구체적인 분석은 다음과 같습니다.
오늘은 컬 방식을 이용해 상대방 페이지의 HTML을 얻어 분석한 후 필요한 데이터를 추출하여 데이터베이스에 저장하는 원리는 매우 간단합니다.
상대방 페이지는 GB2312로 인코딩되어 있는데 로컬 페이지는 UTF-8 인코딩을 사용하기 때문입니다. 따라서 수집 후 인코딩 변환이 필요합니다.
인코딩 변환에는 iconv 메소드가 사용됩니다
iconv — 필수 문자 인코딩에 따라 문자열을 변환합니다.
문자열 iconv( 문자열 $in_charset , 문자열 $out_charset , 문자열 $str )
문자열 str을 in_charset에서 out_charset으로 변환합니다.
변환 방법은 매우 간단합니다. iconv 메서드를 직접 사용하면 됩니다.
<?php $content = iconv('GB2312', 'UTF-8', $content); //$content为采集到的内容 ?>
여러 페이지를 테스트했는데 모두 정상적으로 수집되었습니다. 그러나 후속 컬렉션에서는 여러 페이지가 불완전하게 수집되었습니다.
먼저 정규화에 오류가 있는지 고려한 후 확인 후 이 문제를 제거합니다. 조사 결과, iconv 트랜스코딩 후의 콘텐츠가 수집된 콘텐츠보다 훨씬 짧은 것으로 나타났습니다.
Apache 로그를 확인하고 프롬프트를 확인하세요. 주의 사항: iconv(): 입력 문자열에서 잘못된 문자를 감지했습니다.
설명서를 확인하고 다음 지침을 따르세요
out_charset 뒤에 //TRANSLIT 문자열을 추가하면 음역 기능이 활성화됩니다. 이는 대상 문자 세트로 문자를 표현할 수 없는 경우 하나 이상의 유사한 문자로 근사화할 수 있음을 의미합니다.
//IGNORE 문자열을 추가하면 대상 문자 집합에서 표현할 수 없는 문자는 자동으로 삭제됩니다. 그렇지 않으면 str이 첫 번째 유효하지 않은 문자부터 잘리고 E_NOTICE가 발생합니다.
iconv가 인식할 수 없는 콘텐츠를 발견하면 인식할 수 없는 첫 번째 문자를 잘라내고 E_NOTICE를 생성하는 것으로 나타났습니다. 따라서 다음 내용은 삭제됩니다.
출력 문자 집합 뒤에 //IGNORE를 추가하면 후속 콘텐츠를 자르거나 삭제하지 않고 인식할 수 없는 콘텐츠만 삭제됩니다.
프로그램 수정 후 정상입니다
<?php $content = iconv('GB2312','UTF-8//IGNORE',$content);//$content为采集到的内容 ?>
팁: iconv 사용 시 UTF-8 인코딩을 사용하려면 UTF8 대신 UTF-8을 사용하세요. UTF8을 사용하는 일부 서버에서는 문제가 발생할 수 있기 때문입니다.
이 기사가 모든 사람의 PHP 프로그래밍 설계에 도움이 되기를 바랍니다.