sábado, 11 de febrero de 2017

4.23 [A+] HTML: ¿migrar a un nuevo juego de caracteres?

4.23 [A+] HTML: ¿migrar a un nuevo juego de caracteres?

Debes ver el vídeo "HTML: ¿migrar a un nuevo juego de caracteres?" en el que plantean diferentes posibilidades ante el problema de migrar o no migrar un sitio web que ya existe a otro juego de caracteres.

Antes de empezar, me gustaría recordarte algunos de los sitios web en los que puedes encontrar más información sobre mí y sobre mi trabajo, y dos formas de contactar conmigo, a través de mi correo electrónico sergio.lujan@ua.es y a través de mi cuenta en Twitter @sergiolujanmora.
Antes de ver este vídeo te recomiendo que veas los vídeos “HTML: juego de caracteres” y
“HTML: el juego de caracteres y los editores de texto”, que te ayudarán a entender mejor qué es el juego de caracteres.
En esos dos vídeos el consejo que doy es que lo mejor es usar el juego de caracteres UTF-8 sin BOM, ya que es la solución a todos los problemas que pueden aparecer con el juego de caracteres y permite mezclar en un mismo documento textos en cualquier idioma, es decir, te permite mezclar caracteres de cualquier alfabeto.
Pero, ¿qué pasa si ya tenemos un sitio web con otro juego de caracteres? ¿Debemos migrar el sitio web al juego de caracteres UTF-8 sin BOM? Vamos a analizarlo con un caso real,
la situación que me ha planteado un amigo que es alumno de este curso.
Mi amigo es biólogo y empezó a hacer páginas web en el año 1996. Sus primeras páginas web las hacía con el programa Microsoft Frontpage.
Desde hace varios años, mi amigo mantiene un sitio web sobre rutas de montaña, de senderismo, muy popular, con un buen número de visitas.
Mi amigo me mandó el siguiente mensaje al ver uno de mis vídeos:
Una duda técnica. Después de ver el último vídeo que has publicado sobre codificación UTF-8 sin BOM, me he dado cuenta de dos cosas. Una, de que eso existe. Dos, que en mi editor de HTML (Dreamveawer 8) las nuevas páginas están configuradas como tipo de documento (DTD: XHTML 1.0 Transitional) y codificación (encoding: europeo occidental). Sobre la codificación, no hay problema para ponerla en UTF-8 sin BOM, pero con respecto al tipo de documento, ¿cuál de las siguientes posibilidades que me ofrece debo escoger?: HTML 4.01 Transitional, HTML 4.01 Strict, XHTML 1.0 Transitional, XHTML 1.0 Strict, XHTML Mobile 1.0.
Y continúa:
Esto es más que nada para hacer la práctica del curso, aunque también me bajaré Notepad++ a ver si me acostumbro. Aparte de eso, ya me he dado cuenta de que todo lo que he escrito más o menos desde 2004 está en XHTML 1.0 Transitional y europeo occidental. Supongo que algún día tendré que validar y limpiar todo ese código. ¿Es tan simple como guardar las páginas con la nueva codificación, o se debe hacer una revisión completa y manual para detectar errores? Tampoco estoy pensando en revisar todo lo viejo, sino de aprovechar lo que funcione bien, se entiende.
Mi amigo usa Dreamweaver 8. Cuando se crea un nuevo documento, aparece un asistente que permite elegir la categoría de documento que se quiere crear. Cuando se elige crear una página web, se tiene que elegir el tipo de documento, el DTD que se quiere aplicar. El DTD, el DOCTYPE, indica la versión de HTML que se usa.
Además, en las propiedades de un documento también se puede definir la codificación, el encoding del documento, el juego de caracteres.
Al final, todo esto se traduce en dos cosas en el código HTML:
En el DOCTYPE en el que se indica la versión de HTML.
Y en la etiqueta meta charset en la que se indica la codificación o juego de caracteres.
Mi amigo usa el juego de caracteres ISO-8859-1, también llamado Latin1,
que Dreamweaver llama “Europa occidental”, porque es el mejor juego de caracteres para los idiomas de Europa occidental, incluido el español. No hay ningún problema en usar este juego de caracteres, pero mi amigo hace algo que no es necesario.
Mi amigo escribe los caracteres que no pertenecen al juego de caracteres ASCII, como las vocales acentuadas y la eñe como referencias de carácter con nombre.
En el vídeo “HTML: tres errores típicos” ya expliqué que cuando se escribe el código así, a veces es muy difícil de leer.
¿Este código está mal? No, no está mal, pero si se emplea el juego de caracteres adecuado, y mi amigo está utilizando ISO-8859-1, que es un juego de caracteres adecuado, entonces escribir el texto así es totalmente inútil porque no es necesario y no aporta ninguna ventaja.
Volviendo al correo de mi amigo, le contesté lo siguiente:
Este consejo (utilizar UTF-8 sin BOM) es para la creación de las páginas nuevas. En tu caso, yo te aconsejo que sigas como hasta ahora, no te vale la pena realizar una migración si ahora mismo no tienes ningún problema. No hay ningún problema para trabajar con Europeo Occidental (ISO-8859-1/Latin1) si no tienes que incluir idiomas con otros alfabetos o no te vas a conectar con otro sistema que tenga otra codificación.
Mi amigo podría tener problemas si se conecta a una base de datos y no elige el juego de caracteres adecuado, o si utiliza un servicio web que le devuelve los datos en un juego de caracteres distinto al suyo, pero en principio no tiene planes de hacer nada de esto.
Y continuaba con mi respuesta:
Digamos que "UTF-8 sin BOM" es la solución fácil para todo y que te asegura que no tendrás problemas en el futuro, pero usar Europa Occidental es una buena opción, es más, es lo mejor porque ahorras espacio.
¿Qué significa “ahorrar espacio”?
Vamos a hacer una prueba. Me bajo el fichero HTML de la página principal de la Universidad de Alicante.
Y con el Notepad++ lo convierto del formato original, UTF-8 sin BOM a ISO-8859-1 o Latin1.
Si comparamos los tamaños de los ficheros, comprobamos que la versión original de la página web, que está en formato UTF-8 sin BOM, la que podemos ver a la izquierda, ocupa 360 bytes más que la versión en formato Latin1, que aparece a la derecha. Esto se debe a que ciertos caracteres, las vocales acentuadas o la eñe, ocupan 2 bytes en vez de uno.
Y por último, le decía a mi amigo:
Respecto al DOCTYPE, sí que te aconsejo que utilices <!DOCTYPE html>, para HTML5, en tus nuevas páginas. Si no, sigue con el XHTML 1.0 Transitional.
¿Por qué le aconsejo esto? Porque es muy probable que en un plazo corto de tiempo le interese aprovechar algunas de las nuevas características de HTML5.
Y para terminar, ¿cómo podemos convertir fácilmente un conjunto de páginas de una codificación a otra? Es decir, ¿cómo puedo migrar un sitio web de una codificación a otra?
Pues en Windows no es fácil. En Linux y Mac OS X es fácil desde la línea de comandos.
Por un lado, tenemos el comando file que nos permite conocer el tipo y la codificación de un fichero y por otro lado tenemos iconv, que convierte la codificación de un fichero de una codificación a otra.
En Windows, el único método que conozco es utilizar un editor de texto, como por ejemplo
el Notepad++ y convertir fichero a fichero nuestro sitio web.
Por último, en el sitio web del W3C dedicado a la internacionalización podemos encontrar mucha información sobre el juego de caracteres. Te recomiendo la lectura de los artículos
“Codificación de caracteres: conceptos básicos” y “Selección y aplicación de codificación de caracteres”.

Espero que estos vídeos te ayuden a entender qué es el juego de caracteres, y lo sepas utilizar un poco mejor.


No hay comentarios:

Publicar un comentario