La semana pasada dedicamos varios días a rehacer la web de Carmen de la Rosa.
Es un trabajo que suele resultar cansado y tedioso, aunque los resultados han sido bastante satisfactorios. Ha quedado una web moderna y profesional, seria y sutil, delicada y dulce… como ella.
Sigo programando HTML con mi muy querido editor VI, sobre, por supuesto, Linux (Mint), y como habitualmente, he tenido problemas de codificación de las páginas. Nuestras queridas Ñ/ñ, por no hablar de los Euros (€) que están contenidos sin problema en UTF-8, resulta que no lo están tan fácilmente en ISO-8859-1, así que a veces las páginas no tienen ni idea (porque yo no lo incluyo) el conjunto de caracteres que las construye.
Esto es así porque yo solía programar en aquella época en la que solo había ASCII… 256 caracteres y había que apañarse… pero en estos tiempos modernos (jejejeje) las cosas pueden simplificarse si se saben algunas nociones como incluir un «tag» meta en las cabeceras de cada una de las páginas web estáticas que manejamos diciéndole cuál es el tipo de caracteres con el que está hecho ese fichero.
Eso puede hacerse de diversas maneras:
< meta http-equiv="Content-Type" content="text/html; charset=utf-8" >
que se puede abreviar como:
< meta charset="UTF-8" >
Para indicar que el conjunto de caracteres es de tipo UTF-8, pero también dejándolos en iso-8859-1 añadiendo la siguiente metainstrucción:
< meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" >
Para ver qué tipo de codificación contienen los archivos existe el comando file y un ejemplo de su utilización sería:
giusseppe@PCTACENS /media/GSPDISK/jmdomin/web-sites/carmendelarosa $ file -i es_*html
es_bio.html: text/html; charset=utf-8
es_clases.html: text/html; charset=iso-8859-1
es_contacto.html: text/html; charset=utf-8
es_contacto.iso-8859-1.html: text/html; charset=iso-8859-1
es_fotos.html: text/html; charset=iso-8859-1
es_frames.html: text/html; charset=utf-8
es_main.html: text/html; charset=utf-8
es_nclave.html: text/html; charset=utf-8
es_videos.html: text/html; charset=us-ascii
Y, por último, la posibilidad de convertir archivos de un formato a otro, mediante el comando iconv, en este caso incluido en un script que convierte todos los archivos de un determinado directorio pasado en la línea de comandos, de un formato (UTF-8) a otro (ISO-8859-15).
#!/bin/bash
DIRECTORIO=$1
cd $1
for file in *.txt
do
iconv -c -t ISO-8859-15 -f UTF-8 "$file" -o "${file%.txt}.iso8859-15.txt"
done
Cambiando *.txt por *.html, podría cambiar todos los archivos html de una web y así hacer que tuviesen el mismo tipo de codificación, invirtiendo el orden de -t (to-format) y -f (from-format), para tenerlos todos en UTF-8, en lugar de tener variedad de formatos.