Ver Mensaje Individual
  #6 (permalink)  
Antiguo 07/12/2006, 06:15
Avatar de mape367
mape367
 
Fecha de Ingreso: noviembre-2004
Ubicación: CDE, Paraguay
Mensajes: 213
Antigüedad: 20 años
Puntos: 3
Re: Como detectar codificacion de una string?

Buenas,

Amigos, encontre una solución
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";
 
?>
Es un script basado en el script de Clbustos, en realidad lo unico que modifque fue que en vez de devolver el resultado siempre en utf8, lo hace en ISO 8859-1. El script Original esta disponible aquí.

Espero sea de utilidad para alguien más. No lo habia encontrado anteriormente porque no sabía como buscarlo en google, luego de haber lanzado muchas busquedas y analizado varios articulos con varias palabras claves, escribi unas palabras claves que no recuerdo, y ahí estaba, jeje.

Saludos