2010-12-29 6 views
4

안녕하세요, 저는 다른 웹 사이트에서 콘텐츠를 검색하기 위해 간단한 html dom을 사용하고 있습니다 만, 간단한 html dom을 사용하여 검색된 내용에 문자 인코딩 문제가 있습니다. 문자가 물음표가있는 작은 다이아몬드 모양으로 표시됩니다.간단한 HTML DOM 문자 인코딩 문제

문자 인코딩 문제는 검색된 콘텐츠에서만 발생하며 내 사이트의 다른 모든 텍스트는 잘 표시됩니다.

누구든지 도움이된다면 도움이 될 것입니다.

답변

5

긁힌 텍스트의 charset을 페이지에서 사용하는 charset으로 변환하려면 iconv을 사용해보십시오.

서명 :

string iconv (string $in_charset , string $out_charset , string $str) 

예 : 웹 사이트에

echo iconv("ISO-8859-1", "UTF-8", $text); 
2

이동 및 페이지 정보를 확인하여 자신의 캐릭터 세트를 확인합니다.

2

나는이 문제도 가지고 있었지만, charset problem.It은 단순한 html dom이 처리하지 못하는 gzip 압축 문제가 아니었다. 여기 내 해결책이 있습니다. file_get_html 대신 file_get_html2 함수를 사용하십시오.

function curl($url){ 
    $headers[] = "User-Agent:Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13"; 
    $headers[] = "Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"; 
    $headers[] = "Accept-Language:en-us,en;q=0.5"; 
    $headers[] = "Accept-Encoding:gzip,deflate"; 
    $headers[] = "Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.7"; 
    $headers[] = "Keep-Alive:115"; 
    $headers[] = "Connection:keep-alive"; 
    $headers[] = "Cache-Control:max-age=0"; 

    $curl = curl_init(); 
    curl_setopt($curl, CURLOPT_URL, $url); 
    curl_setopt($curl, CURLOPT_HTTPHEADER, $headers); 
    curl_setopt($curl, CURLOPT_ENCODING, "gzip"); 
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); 
    $data = curl_exec($curl); 
    curl_close($curl); 
    return $data; 

} 
function file_get_html2($url){ 
    return str_get_html(curl($url)); 
}