Detectar UTF-8, ASCII e ISO 8859-1 en PHP

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

Leer más » 2 Comentarios

Entender los juegos de caracteres y “collation” [parte 2/2]

Esta es la segunda y última parte de la entrada publicada el otro día. Trataremos primero el formato de codificación Unicode que almacena los símbolos con longitud variables, UTF-8; y terminaremos comentando el collation u orden lexicográfico que seguro que habéis visto si manejáis algún gestor de base de datos como MySQL.

UTF-8

La aparición de UTF-8 supuso un antes y un después en la tecnología derivada de los juegos de caracteres. Sus dos creadores fueron: Robert C. PikeKenneth L. Thompson (el mismo que creó Unix y fue padre de B el antecesor de C). read more

Leer más » 7 Comentarios

Entender los juegos de caracteres y “collation” [parte 1/2]

Hace ya unos días iniciamos la serie de artículos de “Conceptos de informática” y comenzamos hablando del endian hoy seguimos con esta serie de post y hablaremos de los juegos de caracteres, los llamados charset y los collation que podríamos traducirlo como orden lexicográfico.

Juegos de caracteres

Cuando queremos almacenar información textual sobre una máquina que gestiona y almacena sólo información binaria, tenemos que decidir algún método para formalizar nuestra representación textual en forma de dígito que esta pueda almacenar. read more

Leer más » 11 Comentarios