Saltar al contenido Navegación Ir a buscar

Actualizaciones ocasionales en inglés, mayormente sobre programación, ocasionalmente de fútbol.

UTF-8 tips

No es muy conveniente sugerir sin una explicación previa:

La representación de los distintos lenguajes en los ordenadores está basada en codificaciones1 y juegos de caracteres2.

Los idiomas que emplean más de 255 glyphs3 – como, por ejemplo, el castellano – necesitan un modo de representar los códigos de caracteres algo más complejo que el empleado en ASCII, en el que el total del juego de caracteres suma sólo 128, que pueden representarse empleando 7 bits. En ASCII, cada caracter es un bit y cada palabra – ya sé, es cada cadena, pero si sabes que se trata de una cadena, tal vez deberías saber más de UTF-8 :-) – consiste sencillamente en una secuencia de bits.

Esta necesidad de representar lenguajes que emplean más de 255 glyphs3 ha dado lugar a numerosos juegos de caracteres como, por ejemplo, el tradicional del castellano y otros idiomas, denominado ISO-8859-1.

Unicode

Unicode es, simplemente, el intento de unificar todos los juegos de caracteres conocidos en uno sólo.
Proporciona la posibilidad de emplear varios lenguajes, que emplean juegos de caracteres muy distintos, en un único documento.

¿Por qué usar unicode?

Es igualmente válido el empleo de UTF-16 que de UTF-8, pero la idea es emplear el último, ya que está ampliamente soportado en una gran cantidad de lenguages de programación.

Una lista de buenas razones podría ser la siguiente:

  • Evitarnos complicaciones. La tendencia general es al soporte nativo de UTF-8 por parte de todos los lenguajes de programación. Además, los navegadores web soportan UTF-8 desde justo después de Netscape 4, por lo que …
  • ... si empleamos UTF-8, no hace falta que reemplacemos los caracteres típicos del castellano por sus entidades HTML – mejor numéricas, que son también válidas en documentos XML y, por tanto, nos evitamos sorpresas desagradables en nuestros feeds – correspondientes. Basta con emplear la etiqueta meta apropiadamente y servir los caracteres tal cual: <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  • Favoreceremos la posibilidad de emplear diversas aplicaciones para acceder y publicar en nuestras webs, como los diferentes lectores de feeds, clientes XML-RPC de escritorio, ...
  • La migración de nuestra base de datos de contenidos para emplear otro sistema de gestión será mucho menos traumática.

Iniciativa pro utf-8, ¡hasta con banner!

Como ya sabeis, a principios de Año, en Microsiervos decidieron mudarse a utf-8 adheriéndose a la predicción de Diego de que éste sería el año del utf-8. Incluso hay una página del wiki en el que se listan algunos Weblogs UTF-8, a los que les faltan, sólamente, todos los weblogs que emplean textpattern.

Sobre el banner, yo no pienso emplearlo. No es que no me guste, ni que no me parezca buena la iniciativa. Es que lo más importante de UTF-8 no es decírselo a los visitantes de tu sitio, sino disfrutar de la comodidad en la que vives desde que lo empleas. Y por aquí ya hace tiempo que se usa, así que me queda un poquito anticuado :-).

Reiterativo

No es la primera vez que se trata el tema por estos lares. El artículo de marzo del año pasado ya proporcionaba cierta información y apuntaba a enlaces de artículos anteriores: UTF-8.

Es vuestra elección emplearlo o no; pero luego vendrán las quejas con los juegos de caracteres de vuestras bases de datos.

MySQL

Casi se me olvida. Turning MySQL data in latin1 to utf8 utf-8, de Derek Sivers proporciona un buen montón de trucos para olvidarnos de la antigua representación de caracteres de MySQL empleando latin1 y pasar, de una vez por todas, a utf-8.

1 encoding: el modo en el que se representan los números enteros que componen un carácter en una secuencia

2 character set: representación de un número entero en un glyph3

3 glyph: la imagen que representa el carácter.

17/01/2006 04:49 PM

  1. Hola Kusor! Gran artículo, aunque obviamente, mi cerebrito tiene dificultades con algunos conceptos…

    ¡Vuelvo a la carga!

    Yo ya había comentado en tu anterior artículo sobre UTF-8 (tremendo choclazo había escrito, “blasfemando” contra TXP, que me guardaba eñes y tildes como simbolitos raros, je). Cuestión que no era culpa de TXP, sino de mi hosting, su base de datos y la alineación de los planetas.

    ¡Buenas noticias! Mi hosting a actualizado a MySQL 4.1 y me gustaría hacer los cambios necesarios en mi actual base de datos para que funciono más aceitada con TXP.
    Kusor, ya me habías dado una mano y me habías sugerido este snippet de TextSnippets.

    Veo que en este artículo sugerís un artículo/tutorial que hay en la página de O’Reilly.

    Quisiera saber cuál recomiendas que siga de los dos. Me parece más fácil el de TextSnippets, pero creo que es más viejo… por ende, ¿más desactualizado tal vez?

    Te agradezco tu ayuda y gracias por echar luz en este tema de los encodings, caracteres…
    Es tan feliz y relajante saber que hay alguien que habla la lengua de Cervantes entre los desarrolladores de TXP.

    Saludos!


    Maniquí    19/01/2006 06:22 PM    #
  2. Los dos son perfectamente válidos. En concreto, el snippet del que hablas es más sencillo de emplear y perfectamente útil si la actualización ha sido desde MySQL4.0 a MySQL4.1, mientras que el que sugiero aquí es para cuando existen problemas mayores, complejos de resolver de otro modo diferente al estudio detallado de los contenidos de la DB.

    Puedes tratar de ir adelante con la sugerencia de los snippets. Eso sí, siempre haciendo una copia de seguridad de la Base de Datos, antes de tocar nada ;-)


    Pedro Palazón    19/01/2006 06:44 PM    #
  3. Gracias por la respuesta, Kusor.

    Este comentario iba a ser más largo, pero cada vez que cliqueo “previsualizar” recibo un mensaje de:

    Precondition Failed

    The precondition on the request for the URL /article/665/utf-8-tips evaluated to false.

    Veamos si puedo postear este comentario… voy a hacer clic en “previsualizar” y…

    Sí! Pude previsualizarlo! ahora en “Enviar”...


    Maniquí    19/01/2006 06:54 PM    #
  4. Puede deberse a los filtros que se aplican de tanto en cuando a todas las peticiones vía POST que se envían a un servidor configurado para filtrarlas.

    ¿Tal vez has escrito alguna palabreja susceptible de ser considerada SPAM o algún binario típico de un sistema UNIX?.

    Y si no, al mail hombre, al mail, que ya sabes dónde encontrarlo.


    Pedro Palazón    19/01/2006 06:57 PM    #
  5. Gracias a los consejos de Kusor, parece haberme salido todo bien…

    Navegando la base de datos con PHPMyAdmin se ve todo muy lindo, con tildes, eñes y demás.

    Finalmente, utilicé el snippet de TextSnippet y a último momento, cuando daba todo por perdido, Kusor me recordó que tenía que cambiar una línea en el config.php de TXP.


    Maniquí    20/01/2006 05:19 AM    #