La importancia de los juegos de caracteres y los collation es algo básico para tratar con cadenas de textos y más aún si hablamos un lenguaje que no “entra” dentro del ASCII como es nuestro caso. En Linux Hispano ya hablamos en su momento de este tema:
Hoy volvemos a hablar, pero en un contexto más práctico. Cuando trabajamos con PHP, tenemos instrucciones que nos permiten codificar o decodificar texto en diferentes formatos, por ejemplo: utf8_decode o utf8_encode. Sin embargo, no existe un método que nos confirme de manera directa si el texto está en cierta codificación o no.
En PHP y Otras Yerbas, nos muestran una serie de funciones de gran interés para conseguir justo esto, detectar la codificación que usa un texto:
<?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) == 0x1E) {
$c = 3;
} else {
return ISO_8859_1;
}
}
}
return ($ascii) ? ASCII : UTF_8;
}
?> read more