EL CHARSET O JUEGO DE CARACTERES

Google+ está queriendo ser una gran red social.
Ahora me envía de vez en cuando un correo sugestivo, un correo electrónico con sugerencias para nuevas amistades electrónicas.
Yo tengo configurado mi buzón de correo rojasresdes@gmail.com para que me lo descargue Outlook. En la imagen (retocada para salvaguardar identidades de personas) se puede ver la enorme cantidad de fallos de deletreo que recibo.

Ya estoy acostumbrado a verme como
José Antonio Rojas Delgado, y a mi país como España, porque escribo programas, y sé lo que es eso. Lo último que se depura es la presentación. Lo más importante siempre es la funcionalidad, el algoritmo, que el programa resuelva automáticamente o ayude a las tareas cotidianas. Siempre queda para el final el tema de las tildes. Tengo que depurar rutinas de programas que generan correos electrónicos todos los días. Así que sé lo que es eso.

Lo que procuro hacer es probar cada nuevo programa que escribo, antes y después de la implantación, durante la fase de pruebas y tras instalarlo en el servidor.  De este modo evito muchos errores. Mis clientes nunca usan un programa que no haya usado yo primero. No quiero decir con ésto que yo sea el perfecto programador.

Pero sí digo que no esperaba ésto de Google.
¿Cuántas posibilidades puedo imaginar? Y más interesante ¿cuál será la verdadera?
Una de cinco:
- Outlook no da la talla.
- Outlook da la talla pero necesito configurarlo.
- No han probado su programa generador de correos sugestivos.
- Y si lo han probado, no han encontrado el error.
- Y si lo han probado y han encontrado el error, no han conseguido corregirlo.
- Y si lo han probado y han encontrado el error, no han querido corregirlo.

Rechazo las dos primeras. Los correos se ven bien, habitualmente.
Prefiero pensar que sea cierta la tercera.
La cuarta y la quinta no son típicas de buenos programadores. Y yo tengo a los de Google como los mejores de entre los muy buenos.
La sexta conlleva la presunción de culpabilidad de querer hundir al cliente de correo de Microsoft (porque si leo el correo en gmail sí que se visualiza bien).

El estado de la cuestión:

1.- Se puede generar una página web sin especificar un charset o juego de caracteres. En este caso el navegador y el visor de correos deberían entender que la codificación es la establecida por defecto para el sistema operativo, usualmente una codificación ANSI o Europeo Occidental o ISO-8859-1 o Latin1. Esta codificación soporta la mayoría de caracteres con tilde y otros caracteres especiales que solemos usar en español-castellano.
2.- Los editores de páginas web permiten guardar el archivo de página web usando otras codificaciones más idóneas para el idioma español-castellano, como por ej la codificación UTF-8.
3.- Las páginas web tienen un lugar en la cabecera HTML para especificar la codificación que debe usar el navegador o el visor de correos para mostrar su contenido.

El problema:

p1.- Una página web puede ser generada estáticamente por un editor de textos, y ser guardada en disco usando una codificación distinta de la expresada en su cabecera HTML.

p2.- Una página web puede ser generada dinámicamente mediante un programa de servidor activo (PHP, ASP, JSP, ...) . En este caso su codificación coincidirá con la codificación del propio archivo que contiene el programa interpretable por el servidor, y puede igualmente ser distinta de la codificación de la correspondiente cabecera HTML generada dinámicamente por ese mismo programa de servidor.

p3.- Un programa de servidor activo puede generar dinámicamente una página web con un contenido textual codificado en UTF-8, adecuadamente a su cabecera HTML. Si ese mismo contenido se envia a través de correo electrónico enmarcándolo enmedio de un código HTML con codificación de cabecera UTF-8, igual a la empleada en la página web, se comete el error de codificar dicho contenido una segunda vez. La primera vez se codifica antes de entregarlo al gestor de correos para su envío. La segunda al procesarse para su visualización en el cliente de correo, que no espera contenido codificado en UTF-8.

         mail("rojasredes@gmail.com",$asunto, $mensaje, $cabeceras);

La solución:

s1, s2.- Codificar siempre todo con la misma codificación: UTF-8
s3.- Decodificar el mensaje de correo antes de entregarlo al gestor de correos.

         mail("rojasredes@gmail.com",$asunto, utf8_decode($mensaje), $cabeceras);








blog26 - EL CHARSET O JUEGO DE CARACTERES - - -SUSCRIPCIONES - - -http://www.rojasdelgado.com