utf8 - PHP Curl UTF-8 Charset
utf8_encode array php (6)
Tengo un script php que llama a otra página web y escribe todo el html de la página y todo va bien, sin embargo, hay un problema de juego de caracteres La codificación de mi archivo php es utf-8 y todos los demás archivos php funcionan bien (eso significa que no hay ningún problema con el servidor). ¿Qué es lo que falta en ese código y todas las letras en español parecen extrañas? PD. Cuando escribí las versiones originales de estos personajes extraños en php, todos se ven precisos.
header("Content-Type: text/html; charset=utf-8");
function file_get_contents_curl($url)
{
$ch=curl_init();
curl_setopt($ch,CURLOPT_HEADER,0);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_FOLLOWLOCATION,1);
$data=curl_exec($ch);
curl_close($ch);
return $data;
}
$html=file_get_contents_curl($_GET["u"]);
$doc=new DOMDocument();
@$doc->loadHTML($html);
Estaba buscando un archivo codificado de windows-1252 a través de cURL y mb_detect_encoding(curl_exec($ch));
devuelto UTF-8. utf8_encode(curl_exec($ch));
y los personajes eran correctos.
La mejor manera de intentarlo antes es usar urlencode()
. Tenga en cuenta, no lo use para toda la URL. Úselo solo para las partes que necesita, por ejemplo, para caracteres persas. Sin embargo, hay mejores formas si el rango de caracteres que desea codificar es más limitado. Una de estas formas es usar CURLOPT_ENCODING
, pasándolo a curl_setopt()
:
curl_setopt($ch, CURLOPT_ENCODING, "");
Puedes usar el encabezado
header(''Content-type: text/html; charset=UTF-8'');
y después de decodificar cadena
$page = utf8_decode(curl_exec($ch));
Ha funcionado para mi
Simple: cuando usas curl, codifica la cadena para utf-8
, solo necesitas decodificarlos.
Description
string utf8_decode ( string $data )
Esta función decodifica los datos, que se supone que están UTF-8
, a ISO-8859-1
.
function page_title($val){
include(dirname(__FILE__).''/simple_html_dom.php'');
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$val);
curl_setopt($ch, CURLOPT_USERAGENT, ''Mozilla/5.0 (Windows NT 6.1; WOW64; rv:25.0) Gecko/20100101 Firefox/25.0'');
curl_setopt($ch, CURLOPT_ENCODING , "gzip");
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
$return = curl_exec($ch);
$encot = false;
$charset = curl_getinfo($ch, CURLINFO_CONTENT_TYPE);
curl_close($ch);
$html = str_get_html(''"''.$return.''"'');
if(strpos($charset,''charset='') !== false) {
$c = str_replace("text/html; charset=","",$charset);
$encot = true;
}
else {
$lookat=$html->find(''meta[http-equiv=Content-Type]'',0);
$chrst = $lookat->content;
preg_match(''/charset=(.+)/'', $chrst, $found);
$p = trim($found[1]);
if(!empty($p) && $p != "")
{
$c = $p;
$encot = true;
}
}
$title = $html->find(''title'')[0]->innertext;
if($encot == true && $c != ''utf-8'' && $c != ''UTF-8'') $title = mb_convert_encoding($title,''UTF-8'',$c);
return $title;
}
$output = curl_exec($ch);
$result = iconv("Windows-1251", "UTF-8", $output);