Foros del Web » Programando para Internet » PHP »

Problema con codificacion en CURL

Estas en el tema de Problema con codificacion en CURL en el foro de PHP en Foros del Web. Realizo CURL a una pagina con codificación ISO-8859-1, pero yo debo de usar UTF-8, uso una funcion a la que llamo cuando obtengo la web. ...
  #1 (permalink)  
Antiguo 04/10/2011, 02:22
 
Fecha de Ingreso: mayo-2011
Mensajes: 64
Antigüedad: 13 años
Puntos: 8
Problema con codificacion en CURL

Realizo CURL a una pagina con codificación ISO-8859-1, pero yo debo de usar UTF-8, uso una funcion a la que llamo cuando obtengo la web.

Código PHP:
//Funcion para conectar
 
function conectToWeb($url)
    {
        
$ch curl_init();
        
curl_setopt($chCURLOPT_URL$url);
        
//CURLOPT_URL  Dirección URL a capturar. Este valor también puede ser configurado cuando se inicia una sesión con curl_init().
        
curl_setopt($chCURLOPT_HEADERfalse);//CURLOPT_HEADER    TRUE para incluir el header en el output.
        
curl_setopt($chCURLOPT_RETURNTRANSFERtrue);
        
//CURLOPT_RETURNTRANSFER TRUE para devolver el resultado de la transferencia como string del valor de 
        //curl_exec() en lugar de mostrarlo directamente.
        
if(curl_exec($ch)){
            
$pagina=curl_exec($ch);
            
//echo $pagina;
            
curl_close($ch);
            return 
$pagina;
        }
        else{
            return 
false;
        }
    }

//Funcion para conversion UTF8
function to_utf8($in){
        if (
is_array($in)) {
            foreach (
$in as $key => $value) {
                
$out[to_utf8($key)] = to_utf8($value);
            }
        } elseif(
is_string($in)) {
            if(
mb_detect_encoding($in) != "UTF-8")
                return 
utf8_encode($in);
            else
                return 
$in;
        } else {
            return 
$in;
        }
        return 
$out;
    } 

if(
conectToWeb($webInfo)){
            
$Web=conectToWeb($webInfo);//en utiles.php!!    
            
$xy=to_utf8($Web);

Todos los caracteres que tengan tilde, ¿, ñ, y nose si alguno mas no me aparecen y no se que hacer, cuando realizo un echo de $xy , los caracteres siguen apareciendo mal...
  #2 (permalink)  
Antiguo 04/10/2011, 02:44
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Problema con codificacion en CURL

En los comentarios del manual para mb_detect_encoding() sugieren usar el modo estricto para evitar errores.
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 04/10/2011, 03:35
 
Fecha de Ingreso: mayo-2011
Mensajes: 64
Antigüedad: 13 años
Puntos: 8
Respuesta: Problema con codificacion en CURL

Gracias Triby, tenias razon he cambiado la linea de:

Código PHP:
mb_detect_encoding($in)

//por esa otra 

mb_detect_encoding($in"UTF-8""ISO-8859-1"

Gracias!
  #4 (permalink)  
Antiguo 04/10/2011, 04:31
 
Fecha de Ingreso: mayo-2011
Mensajes: 64
Antigüedad: 13 años
Puntos: 8
Respuesta: Problema con codificacion en CURL

El cambio que he hecho esta perfecto, pero ahora tengo otro, va por el mismo camino, el caso es que cuando realizo DOM, al estar la pagina en iso-8859-1, los caracteres son ese es formato, por lo que si busco algo de información, por ejemplo una palabra que contenga una tilde, me es imposible encontrarlo por ese motivo, he intentado antes de buscar en la pagina cambiar el charset para que no halla problemas pero parece que no resulta.

Código PHP:
$doc->loadHTML('<?xml encoding="UTF-8">'.$loadWeb);//Carga del objeto DOM en HTML
            
foreach ($doc->childNodes as $itemm){
        if ($itemm->nodeType == XML_PI_NODE){
            $doc->removeChild($itemm); // remove hack
        $doc->encoding = '
UTF-8// insert proper
        
}
}
  #5 (permalink)  
Antiguo 04/10/2011, 05:45
 
Fecha de Ingreso: mayo-2011
Mensajes: 64
Antigüedad: 13 años
Puntos: 8
Respuesta: Problema con codificacion en CURL

Solucionado tan facil como antes de tratar la web con DOM se remplaza la codificacion y listo.

Código PHP:
$doc= new DOMDocument();//Creamos el objeto DOM
libxml_use_internal_errors(true);//Evito aparicion de errores.
$loadWebUTF=str_replace("iso-8859-1""UTF-8"$loadWeb);
$doc->loadHTML($loadWebUTF);//Carga del objeto DOM en HTML 

Etiquetas: codificacion, curl
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:01.