Problema simple de codificación de caracteres html dom

Estoy usando dom html simple para recuperar contenido de otro sitio web, pero la cosa es que hay un problema de codificación de caracteres con las cosas recuperadas usando dom html simple. Los personajes aparecen como el pequeño diamante con el signo de interrogación adentro.

El problema de la codificación de caracteres solo ocurre con el contenido recuperado, y el resto del texto en mi sitio se muestra bien.

Si alguien pudiera ayudar, sería genial.

preguntado el 28 de diciembre de 10 a las 22:12

3 Respuestas

Intenta usar iconv para convertir el juego de caracteres del texto raspado en el juego de caracteres que usa en su página.

Firma:

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

Ejemplo:

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

Respondido el 29 de diciembre de 10 a las 01:12

También tuve este problema, pero no era el problema del juego de caracteres, era la compresión gzip que el simple html dom no maneja. Aquí está mi solución. Usa la función file_get_html2 file_get_html.

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));
}

Respondido 20 Oct 12, 00:10

Vaya al sitio web y verifique su juego de caracteres viendo la información de la página.

$text = iconv(mb_detect_encoding($text), "UTF-8//TRANSLIT//IGNORE", $text);

Respondido el 29 de diciembre de 10 a las 01:12

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.