Cómo saber la codificación del juego de caracteres desde la consola Linux

La codificación empleada en un fichero es extremadamente importante en ciertas situaciones. Se me ocurren dos por ahora: he intentado importar un CSV a LibreOffice Calc y si no llego a dar con la codificación exacta, no hubiera podido tener los datos o al menos no con tildes, eñes, etc.

utf8

Otro caso que se me ocurre, tenemos un servidor web que envía contenido web en un charset diferente al que aparece en la etiqueta <meta>, cierto navegador (Internet Explorer) tiene un problema de visualización por esta causa. read more

Leer más » 7 Comentarios

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

Modificar el juego de caracteres de una base de datos y todas sus tablas en MySQL

Puede que en más de una ocasión os hayáis encontrado con problemas de juegos de caracteres utilizando MySQL. Si el problema es que tenéis una arquitectura en un juego de caracteres determinados, con un collation determinado, y necesitáis hacer una modificación de ambos en caliente sin tener que ir tabla a tabla, necesitaréis de este script que os dejo a continuación. read more

Leer más » 3 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

Unicode cerca del 50% de las comunicaciones en la web

Leyendo el blog oficial de Google, he visto una gráfica que aunque a priori no parezca importante me parece de lo más relevante para los internautas no angloparlantes. Hasta ahora, la red estaba dominada por la codificación ASCII y en todo caso, le seguían los charset de Europa Occidental. Este problema de los juegos de caracteres no es nuevo y es algo que sufrimos todos los no angloparlantes incluso en nuestros equipos a nivel de escritorio (sobre todo en cuanto a compatibilidad entre distintos sistemas, véase por ejemplo acentos en Linux y acentos en Windows). read more

Leer más » Comentar