2009-08-11 15 views
5

Tenemos una aplicación que toma una cadena de texto ingresada por un usuario en un formulario web y lo empaqueta en XML. Para confundir un poco las cosas, el XML se envía como el cuerpo del mensaje de correo electrónico de Outlook.UTF-8 o ISO-8859-1 en XML

Como los usuarios pueden pegar casi cualquier cosa en el formulario web (generalmente de Word), la cadena de texto puede contener caracteres que no sean ASCII (7 bits) como los utilizados para abrir y cerrar comillas dobles.

La cadena viaja intacta por correo electrónico, pero cuando utilizamos el analizador XML de Microsoft, se queja (bastante correctamente) de que el XML contiene caracteres no válidos.

Una solución rápida es poner encoding = "iso-8859-1" en el encabezado. Sin embargo, me pregunto si sería mejor codificar el archivo XML en formato UTF-8 verdadero al principio, ya que he leído artículos que afirman que sería mejor para un mundo más armonioso si cada documento XML estuviera codificado en UTF-8. ?

Pero ... ¿vamos a tener problemas ya que el documento XML se está transfiriendo realmente a través del cuerpo de un mensaje de correo electrónico? Entiendo que UTF-8 es un sistema de codificación de longitud de bytes variable, supongo que utilizar 7 bits ASCII y caracteres de escapismo para indicar "hay más datos".

Otra opción es establecer a UTF-8 pero reemplazar caracteres no ASCII con el & #nnn; formato.

Cualquier consejo sobre esta área bastante complicada apreciada.

Cheers, Rob.

+0

En realidad, la idea de usar & # no es buena, mientras que el documento se abre correctamente, no se muestra correctamente en IE. Las comillas abrir/cerrar se muestran como un bloque. –

+0

El "bloque" indica que la fuente que se está utilizando no tiene un glifo disponible para mostrar el carácter. – andynormancx

+0

ISO 8859-1 no tiene esas citas "inteligentes". Entonces, lo que sucederá es que los bytes que representan esas citas inteligentes terminan como caracteres aleatorios de otros ISO-8859-1, p. "texto citado". UTF-8 es seguro. – MSalters

Respuesta

6

Probablemente trataré de usar UTF-8 siempre que sea posible; simplemente cubre más terreno y es más flexible que ISO-8859-1, que se ahogará, p. Caracteres de Europa del Este ya (intenta escribir Jiři o algo así en ISO-8859-1 - fallará miserablemente).

Así que si realmente quieres intentar cambiar (¡lo cual aplaudo!), Entonces usaría UTF-8 y solo recurriría a ISO-8859-1 si realmente no puedes hacer que UTF-8 funcione.

MArc

7

Aquí desde fuera de sólo-tierra Inglés {1} Puedo confirmar que UTF-8 funciona bien en todas partes y lo ha hecho durante muchos, muchos años. Tengo problemas para recordar, ya que cuando MTA paralizaba los correos electrónicos al eliminar el octavo bit (lo que lleva a "inventos" como QP (que básicamente solucionaban el síntoma en lugar de resolver el problema)). Eso sucedió sin duda a mediados de los 90, aunque UTF-8 rápidamente ganó popularidad y reemplazó a iso-8859-1. No recuerdo cuando cambié, pero supongo que fue al menos antes del año 2000.

Hablando de iso-8859-1, no podrá cubrir todas las entradas posibles de los usuarios. Dependiendo del idioma, pueden ser necesarias otras variantes iso-8859 (por ejemplo, para finlandés y galés), y aun así la familia 8859 no admite idiomas como el chino. UTF-8 en el otro lado debe cubrir todo, por lo que I fuertemente recomendamos que iso-8859-1.

{1} Esto podría sesgar mi experiencia ya que cualquier programa que no admita completamente UTF-8 se consideraría basura y no se usará aquí.