Foros del Web » Programando para Internet » PHP »

Problemas de codificación al extraer paginas chinas

Estas en el tema de Problemas de codificación al extraer paginas chinas en el foro de PHP en Foros del Web. Quiero extraer algún dato de unas páginas extranjeras que contienen caracteres de todo tipo, chinos, rusos, etc. Después quiero guardarlo en la DB de MySQL ...
  #1 (permalink)  
Antiguo 24/12/2012, 10:48
 
Fecha de Ingreso: octubre-2011
Mensajes: 34
Antigüedad: 12 años, 6 meses
Puntos: 2
Problemas de codificación al extraer paginas chinas

Quiero extraer algún dato de unas páginas extranjeras que contienen caracteres de todo tipo, chinos, rusos, etc. Después quiero guardarlo en la DB de MySQL en UTF-8.

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

Código 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ódigo PHP:
ÌÚѶÍø(www.QQ.com)ÊÇÖйúä¯ÀÀÁ¿×î´óµÄÖÐÎÄÃÅ»§ÍøÕ¾£¬ÊÇÌÚѶ¹«Ë¾ÍƳöµÄ¼¯ÐÂÎÅÐÅÏ¢¡¢»¥¶¯ÉçÇø¡¢ÓéÀÖ²úÆ·ºÍ»ù´¡·þÎñΪһÌåµÄ´óÐÍ×ÛºÏÃÅ»§ÍøÕ¾¡£ÌÚѶÍø·þÎñÓÚÈ«Çò»ªÈËÓû§£¬ÖÂÁ¦³ÉΪ×î¾ß´«²¥Á¦ºÍ»¥¶¯ÐÔ£¬È¨Íþ¡¢Ö÷Á÷¡¢Ê±ÉеĻ¥ÁªÍøýÌåƽ̨¡£Í¨¹ýÇ¿´óµÄʵʱÐÂÎźÍÈ«ÃæÉîÈëµÄÐÅÏ¢×ÊѶ·þÎñ£¬ÎªÖйúÊýÒÔÒڼƵĻ¥ÁªÍøÓû§Ìṩ¸»Óд´ÒâµÄÍøÉÏÐÂÉú»î¡£ 
Y yo quiero esto:
Código PHP:
&#33150;讯网(www.QQ.com)是中国浏览量最大的中文门户网站,是腾讯公司推出的集新闻信息、互动社区、娱乐产品和基础服务为一体的大型综合门户网站。腾讯网服务于全球华人用户,致力成为最具传播力和互动性,权威、主流、时尚的互联网媒体平台。通过强大的实时新闻和全面深入的信息资讯服务,为中国数以亿计的互联网用户提供富有创意的网上新生活。 
¿Qué 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ón: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: Problemas de codificación al extraer paginas chinas

Debes usar codificación 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üedad: 12 años, 6 meses
Puntos: 2
Respuesta: Problemas de codificación al extraer paginas chinas

Cita:
Iniciado por abimaelrc Ver Mensaje
Debes usar codificación 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ódigo 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ódigo 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én, con respecto a mb_detect_encoding he encontrado que alguien ha reportado este bug, ¿puede ser que por eso no funcione?

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

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

¿Alguien sabe?

Etiquetas: mysql
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 23:11.