Foros del Web » Programando para Internet » PHP »

Problemas de codificaci髇 al extraer paginas chinas

Estas en el tema de Problemas de codificaci髇 al extraer paginas chinas en el foro de PHP en Foros del Web. Quiero extraer alg鷑 dato de unas p醙inas extranjeras que contienen caracteres de todo tipo, chinos, rusos, etc. Despu閟 quiero guardarlo en la DB de MySQL ...
  #1 (permalink)  
Antiguo 24/12/2012, 10:48
 
Fecha de Ingreso: octubre-2011
Mensajes: 34
Antig黣dad: 15 a駉s
Puntos: 2
Problemas de codificaci髇 al extraer paginas chinas

Quiero extraer alg鷑 dato de unas p醙inas extranjeras que contienen caracteres de todo tipo, chinos, rusos, etc. Despu閟 quiero guardarlo en la DB de MySQL en UTF-8.

Tengo el siguiente c骴igo pero al extraerlo me lo muestra mal. He probado a "jugar" con mb_detect_enconding() pero nada de nada.

C骴igo PHP:
<?php
$web 
= "http://www.qq.com"; // Por ejemplo.
$meta_tags = get_meta_tags("$web");
$description_meta_tag = $meta_tags['description'];
echo 
$description_meta_tag;
?>
Me muestra esto:

C骴igo PHP:
腾讯网(www.QQ.com)是中国浏览量最大的中文门户网站,是腾讯公司推出的集新闻信息、互动社区、娱乐产品和基础服务为一体的大型综合门户网站。腾讯网服务于全球华人用户,致力成为最具传播力和互动性,权威、主流、时尚的互联网媒体平台。通过强大的实时新闻和全面深入的信息资讯服务,为中国数以亿计的互联网用户提供富有创意的网上新生活。 
Y yo quiero esto:
C骴igo PHP:
&#33150;讯网(www.QQ.com)是中国浏览量最大的中文门户网站,是腾讯公司推出的集新闻信息、互动社区、娱乐产品和基础服务为一体的大型综合门户网站。腾讯网服务于全球华人用户,致力成为最具传播力和互动性,权威、主流、时尚的互联网媒体平台。通过强大的实时新闻和全面深入的信息资讯服务,为中国数以亿计的互联网用户提供富有创意的网上新生活。 
縌u� puedo hacer para que me valga con las chinas, las rusas, etc?
  #2 (permalink)  
Antiguo 24/12/2012, 17:42
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicaci髇: En el planeta de Puerto Rico
Mensajes: 14.734
Antig黣dad: 17 a駉s, 4 meses
Puntos: 1517
Respuesta: Problemas de codificaci髇 al extraer paginas chinas

Debes usar codificaci髇 unicode/utf8
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #3 (permalink)  
Antiguo 25/12/2012, 06:08
 
Fecha de Ingreso: octubre-2011
Mensajes: 34
Antig黣dad: 15 a駉s
Puntos: 2
Respuesta: Problemas de codificaci髇 al extraer paginas chinas

Cita:
Iniciado por abimaelrc Ver Mensaje
Debes usar codificaci髇 unicode/utf8
He estado investigando toda la noche y no he conseguido nada. No entiendo lo que me quieres decir, si te refieres a esto no funciona:

C骴igo PHP:
<?php

$codificacion 
= "UTF-8";
header("Content-Type:text/html; charset=$codificacion");

$web = "http://www.qq.com"; // Por ejemplo.
$meta_tags = get_meta_tags("$web");
$description_meta_tag = $meta_tags['description'];
echo 
$description_meta_tag;

?>

De tanto que he investigado me he encontrado con esto pero no funciona.

1)
C骴igo PHP:
 <?php
 define
("UTF_8", 1);
 
define("ASCII", 2);
 
define("ISO_8859_1", 3);
 function 
codificacion($texto)
 {
     
$c = 0;
     
$ascii = true;
     for (
$i = 0;$i<strlen($texto);$i++) {
         
$byte = ord($texto[$i]);
         if (
$c>0) {
             if ((
$byte>>6) != 0x2) {
                 return 
ISO_8859_1;
             } else {
                 
$c--;
             }
         } elseif (
$byte&0x80) {
             
$ascii = false;
             if ((
$byte>>5) == 0x6) {
                 
$c = 1;
             } elseif ((
$byte>>4) == 0xE) {
                 
$c = 2;
             } elseif ((
$byte>>3) == 0x14) {
                 
$c = 3;
             } else {
                 return 
ISO_8859_1;
             }
         }
     }
     return (
$ascii) ? ASCII : UTF_8;
 }

 function 
utf8_decode_seguro($texto)
 {
     return (
codificacion($texto)==ISO_8859_1) ? $texto : utf8_decode($texto);
 }
 
?>

 <?php
 $a
="Ascii";
 
$b="ISO-8859-1: 衢眢�";
 
$c=utf8_encode($b);
 echo 
utf8_decode_seguro($a)."\n";
 echo 
utf8_decode_seguro($b)."\n";
 echo 
utf8_decode_seguro($c)."\n";
 
?>
Tambi閚, con respecto a mb_detect_encoding he encontrado que alguien ha reportado este bug, 縫uede ser que por eso no funcione?

https://bugs.php.net/bug.php?id=47018

Y hay muchos m醩 si buscas en Google "Bug mb_detect_encoding".

緼lguien sabe?

Etiquetas: mysql
Atenci髇: Est醩 leyendo un tema que no tiene actividad desde hace m醩 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 13:48.